function selectOptionByValue(oSelect, value){
    if (oSelect.options.length > 0)
    {
        oSelect.selectedIndex = 0;
        for (i = 0; i < oSelect.options.length; i++){
            if (oSelect.options[i].value == value){
                oSelect.selectedIndex = i;
                break;
            }
        }
    }        
}
	
function populateDDL(ddl, nameValues, defaultValue, addFirst, addFirstText, sourceEmptyText, addLast, addLastText)
{
    $("#" + ddl).empty();
    
    var listHTML = '';
    
    if (addFirst)
    {
        listHTML += '<option value="">' + addFirstText + '</option>'
        if ((sourceEmptyText) && (sourceEmptyText != '') && nameValues.length == 0)
            listHTML += '<option value="">' + sourceEmptyText + '</option>'
    }
    
    for(var i=0; i< nameValues.length; i++)
    {
        var nameValue = nameValues[i];
        
        listHTML += '<option value="' + nameValue.Value + '">' + nameValue.Name + '</option>'
    }	
    
    if (addLast)
        listHTML += '<option value="">' + addLastText + '</option>'
        
    $("#" + ddl).append(listHTML);
    
    //Common
    selectOptionByValue($("#" + ddl)[0], defaultValue);
}

function jQueryObjectExists(jquery){
    if (jquery.length > 0)
        return true;
    else
        return false;
}

function xDelayed(e,fnAction,iDelay){
	this.e=$("#" + e)[0];
	this.e.xDelayed=this;
	this.fnAction=fnAction;
	this.iDelay=iDelay;
	this.timer=null;
	this.touch=function(){
		this.stop();
		this.start();
	}
	this.start=function(){
		if(this.timer==null)
			this.timer=setTimeout(this.fnAction,this.iDelay);
	}
	this.stop=function(){
		if(this.timer!=null){
			clearTimeout(this.timer);
			this.timer=null;
		}
	}
}

//calculate left/top/right/width for current element(el)
function findPos(obj)
{   
    var offsetHeight = obj.offsetHeight;
    var offsetWidth = obj.offsetWidth;
    
    var curleft = curtop = 0;
    if (obj.offsetParent) {
        curleft = obj.offsetLeft
        curtop = obj.offsetTop
        while (obj = obj.offsetParent) {
            curleft += obj.offsetLeft
            curtop += obj.offsetTop
        }
    }
    return [curleft,curtop,offsetHeight,offsetWidth];
}         

//calculate center position left/top for current element(popupObj) relative to container object obj
function GetCenterPos(container, obj)
{
    var coors = findPos(container)
    var containerLeft = coors[0];
    var containerTop = coors[1];
    var containerHeight = coors[2];
    var containerWidth = coors[3];

    var objCoors = findPos(obj)
    var objHeight = objCoors[2];
    var objWidth = objCoors[3];
   	   	
    var left = containerLeft + (containerWidth - objWidth)/2;
    var top = containerTop + (containerHeight - objHeight)/2;
        
    return [left,top]
}  

//Move top object on top of bottom object
function Cover(bottom, top, ignoreSize) {    
    var location = findPos(bottom);
    top.style.position = 'absolute';
    top.style.top = location[1] + 'px';
    top.style.left = location[0] + 'px';
    if (!ignoreSize) {
        top.style.height = bottom.offsetHeight + 'px';
        top.style.width = bottom.offsetWidth + 'px';
    }
}

//Relative move object
function Move(object, TopOffset, LeftOffset) {
    var location = findPos(object);
    
    object.style.position = 'absolute';
    object.style.top = location[1] + TopOffset + 'px';
    object.style.left = location[0] + LeftOffset + 'px';
}   

//calculate screen dimension
function GetScreenDimension()
{
    var screenW = 640;
    var screenH = 480;
    
    if (parseInt(navigator.appVersion)>3) {
        screenW = screen.width;
        screenH = screen.height;
    }
    else if (navigator.appName == "Netscape" 
        && parseInt(navigator.appVersion)==3
        && navigator.javaEnabled() ) 
    {
        var jToolkit = java.awt.Toolkit.getDefaultToolkit();
        var jScreenSize = jToolkit.getScreenSize();
        screenW = jScreenSize.width;
        screenH = jScreenSize.height;
    }

    return [screenW,screenH];
}

//calculate window dimension
function GetWindowDimension()
{
    var winW = 630;
    var winH = 460;
    
    if (parseInt(navigator.appVersion)>3)
    {
         if (navigator.appName=="Netscape")
         {
            winW = window.innerWidth;
            winH = window.innerHeight;
         }
         else if (navigator.appName.indexOf("Microsoft")!=-1)
         {
            winW = document.body.offsetWidth;
            winH = document.body.offsetHeight;
         }         
    }

    return [winW,winH];
}

//calculate scroll dimension
function GetScrollDimension()
{    
    var scrollLeft = (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
    var scrollTop = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);  
    var scrollWidth = (document.documentElement.scrollWidth ? document.documentElement.scrollWidth : document.body.scrollWidth);  
    var scrollHeight = (document.documentElement.scrollHeight ? document.documentElement.scrollHeight : document.body.scrollHeight);  
    
    return [scrollLeft,scrollTop,scrollWidth,scrollHeight];
}

function stopBubble(e){
    if (e && e.stopPropagation) 
        e.stopPropagation();
    else
        window.event.cancelBubble = true;
}

function OnClickImage (me, imgName, decription) 
{
    $("img[name=" + imgName + "]").attr("src", me.src);
    $("#" + imgName + "text").html(decription);
}
function OnClickBigImage(me) 
{
	window.open(me.src);
}