﻿// JScript File

//DOM Utilities

// id function - shortcut for document.getElementByID
function id() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}

// add event script for calling 
// useful for duplicate onload calls and triggering events
// sample call 
// addEvent(window, 'load', funcName, false);
function addEvent(elm, evType, fn, useCapture) {
	    if (elm.addEventListener) {
		    elm.addEventListener(evType, fn, useCapture);
		    return true;
	    }
	    else if (elm.attachEvent) {
		    var r = elm.attachEvent('on' + evType, fn);
		    return r;
	    }
	    else {
		    elm['on' + evType] = fn;
	    }
    }

// Get a style property (name) of a given element(elem)
function getStyle(elem, name){
    
    // if the property exists in style then it has been set recently
    if (elem.style[name]) 
        return elem.style[name];
        
    //otherwise try to use IE method
    else if (elem.currentStyle) 
        return elem.currentStyle[name];
    
    //else get the WC3's method if it exists    
    else if(document.defaultView && document.defaultView.getComputedStyle) {
        name = name.replace(/([A-Z])/g,"-$1");
        name = name.toLowerCase();
        
        var s = document.defaultView.getComputedStyle(elem, "");
        return s && s.getPropertyValue(name); 
    
    //using some other browser so ignore
    }  else 
       return null;  
           
}

//Find the X (offsetLeft) value of an element in relation to a page
function posLeft(elem){
    //are we at the root element
    return elem.offsetParent ?
        
        //if not traverse up the DOM until we are and add add offset  
        elem.offsetLeft + posLeft(elem.offsetParent) :
        
        //if yes then just return offset
        elem.offsetLeft;
} 


//Find the Y (offsetTop) value of an element in relation to the page
function posTop(elem) {
    //are we at the root element
    return elem.offsetParent ?
        
        //if not traverse up the DOM until we are and add add offset  
        elem.offsetTop + posTop(elem.offsetParent) :
        
        //if yes then just return offset
        elem.offsetTop;
}

//Get the parent element
// optional num paremeter allows to you traverse the tree up to a higher parent
function parent(elem, num){
    num = num || 1;
    for (var i = 0; i < num; i++) {
        if (elem != null) elem = elem.parentNode; 
    }
    return elem;
}

//Get width of an element
function sizeWidth(elem) {  
    return elem.offsetWidth;
}

//Inline Tooltip Utilities
function showTip(elem, val) {      
    var top = posTop(elem);
    var left = posLeft(elem);
    var tooltip = "tooltip" + val;
    
    if (id(tooltip))
    {
        id(tooltip).style.display = "block";
        id(tooltip).style.position = "absolute";
        id(tooltip).style.top = top - 5 + "px";
        id(tooltip).style.left = 250 + left + "px"; 
    }
}

//Inline Tooltip Utilities
function FixshowTip(val) {      
    var top = 220; //posTop(elem);
    var left = 300; //posLeft(elem);
    var tooltip = "tooltip" + val;
    
    if (id(tooltip))
    {
        id(tooltip).style.display = "block";
        id(tooltip).style.position = "absolute";
        id(tooltip).style.top = top + "px";
        id(tooltip).style.left = 250 + left + "px"; 
    }
}

function showTipWithOffset(elem, val, topoffset, leftoffset) {      
    var top = posTop(elem);
    var left = posLeft(elem);
    var elemwidth = sizeWidth(elem) + 25;
    var tooltip = "tooltip" + val;
    
    if (id(tooltip))
    {
        id(tooltip).style.display = "block";
        id(tooltip).style.position = "absolute";
        id(tooltip).style.top = top - topoffset + "px";
        id(tooltip).style.left = leftoffset + elemwidth + left + "px"; 
    }
}

function hideTip(val){
    var tooltip = "tooltip" + val;
    if (id(tooltip))
    {    
        id(tooltip).style.display = "none";
    }
}



// methods for methods for moving selected option from one dropdown to another
function ddDelAtt(ddAvailableID, ddSelectedID){
    var available = $(ddAvailableID);
    var selected = $(ddSelectedID);
       var selIndex = selected.selectedIndex;
       if(selIndex < 0)
          return;
       available.appendChild(selected.options.item(selIndex));
       //selectNone(selected,available);
       //setSize(available,selected);
    }   
            
function ddAddAttr(ddAvailableID, ddSelectedID){
    var available = $(ddAvailableID);
    var selected = $(ddSelectedID);
    var addIndex = available.selectedIndex;
       if(addIndex < 0)
          return;
       selected.appendChild(available.options.item(addIndex));
   //selectNone(countriesSelected,countriesAvailable);
   //setSize(countriesSelected,countriesAvailable);
}

//function for displaying currency as slected by user
function showCurrency(obj) {
    var symbol = $("cursymbol");
    switch (obj.value) {
        case "USD":
            symbol.innerHTML = "$"
            break
        case "GBP":
            symbol.innerHTML = "£"
            break;
        case "EURO":
            symbol.innerHTML = "€"
            break;
        default:
            alert ("none picked")
   }
}

// display elements for creation of number

