function strltrim()
{
    return this.replace(/^\s+/,'');
}

function strrtrim()
{
    return this.replace(/\s+$/,'');
}

function strtrim()
{
    return this.replace(/^\s+/,'').replace(/\s+$/,'');
}

String.prototype.ltrim = strltrim;
String.prototype.rtrim = strrtrim;
String.prototype.trim = strtrim;


function reset_request_arrays_p() {
    xmlHttp4.splice(0,xmlHttp4.length);
    
}

function resetAssociativeArray(varArray){
    for(var key in varArray)
        delete(varArray[key]);
}

var global_dynamic_id;
var xmlHttp4 = new Array();

var grc_aj = -1;
var gb_urlPostpath;
function ajaxPost(url_path,id,str1,str2,str3,str4,str5,str6,str7,str8,str9,str10, str11, str12, str13, str14, str15, str16, str17, str18, str19, str20) {
    var postdata=new Array();
    postdata="q1="+str1+"&q2="+str2+"&q3="+str3+"&q4="+str4+"&q5="+str5+"&q6="+str6+"&q7="+str7+"&q8="+str8+"&q9="+str9+"&q10="+str10 +"&q11="+str11+"&q12="+str12+"&q13="+str13+"&q14="+str14+"&q15="+str15+"&q16="+str16+"&q17="+str17+"&q18="+str18+"&q19="+str19+"&q20="+str20;
    
    grc_aj++;
    var rc = grc_aj;
    
    global_dynamic_id=id;
    gb_urlPostpath=url_path;
    //show_loading(true);
    
    var objXMLHttp=null
    if (window.XMLHttpRequest) {
        xmlHttp4[rc]=new XMLHttpRequest()
        if (xmlHttp4[rc].overrideMimeType) 
            xmlHttp4[rc].overrideMimeType('text/xml'); 
    }
    else if (window.ActiveXObject) {
        xmlHttp4[rc]=new ActiveXObject("Microsoft.XMLHTTP")
    }
    //return objXMLHttp
    //xmlHttp4[rc]=GetXmlHttpObject()
    if (xmlHttp4[rc]==null) {
        alert("Browser does not support HTTP Request")
        return
    } 
    xmlHttp4[rc].onreadystatechange = alertContents; 
    xmlHttp4[rc].open('POST', gb_urlPostpath, true); 
    xmlHttp4[rc].setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
    xmlHttp4[rc].setRequestHeader('Content-length', postdata.length); 
    xmlHttp4[rc].send(postdata);
    
    if(id=="ajaxResultFromSendingEmail"){
        str1.disabled=true;
        document.getElementById(id).innerHTML="<b style='color:red'>loading..</b>";
    }
    
    function alertContents() { 
        if (xmlHttp4[rc].readyState == 4|| xmlHttp4[rc].readyState=="complete") { 
            
            //show_loading(false);
            document.getElementById(id).innerHTML=xmlHttp4[rc].responseText 
            
            /*
            if (xmlHttp4[rc].status == 200) 
                alert(xmlHttp4[rc].responseText); 
            else 
                alert('There was a problem with the request. Status: ' + xmlHttp4[rc].status); 
            */
           if(id=="ajaxResultFromSendingEmail"){
               str1.disabled=false;
               var text=xmlHttp4[rc].responseText;
               text=text.trim();
               if(confirm( text+".\nΚαθαρισμός φόρμας;") ){
                   var jsScriptToRun="document."+str2+".reset();"
                   eval(jsScriptToRun);
               }
                   
           }
           if(id=="fudeleterows"){
               ajaxPostForm('dynamicContent/ajax/ajax-fileViewer.jsp','reloadfileviewer',document.gvform_gv_inserted_files);

           }
        }
    } 
}
//**********************
function show_loading(state) {	
    if(state)
        document.getElementById("loading").style.display="";
    else
        document.getElementById("loading").style.display="none";
}


/**
 * genikou skopou associative ARRAY
 ************************************
 * ka8e sunarthsh pou to xrhsimopoiei,
 * prepei na to kanei reset prin to 
 * xrhsimpoihsei.
 */
var formInputName=new Array();
//*****************************


function pushInInputArray(key,value){
    //formInputName[key]=value;
    formInputName["vw"]="golf";
    formInputName["bmw"]="316";
    formInputName["toyota"]="corolla";
    formInputName["volvo"]="s30";
}


function pushInArray(key,value){
    formInputName[key]=value;
}

function pushFormInArray(getForm){
    resetAssociativeArray(formInputName);
    for(i=0;i<getForm.elements.length;i++){
        var elem=getForm.elements[i];
        if(elem.type!="submit" && elem.type!="reset"){
            if(elem.type=="radio" || elem.type=="checkbox")
                pushInArray(elem.name,elem.checked);
            else
                pushInArray(elem.name,elem.value);
        }
    }

}


function readArray(){
    var text="";
    for(var key in formInputName){
        text+=key+":"+formInputName[key]+"\n";
    }
    alert(text);
}
function ajaxPostActionHandler(url_path,id,action,formName) {
    var postdata=new Array();
    postdata="action="+action+"&formName="+formName;
    
    grc_aj++;
    var rc = grc_aj;
    
    global_dynamic_id=id;
    gb_urlPostpath=url_path;
    //show_loading(true);
    
    var objXMLHttp=null
    if (window.XMLHttpRequest) {
        xmlHttp4[rc]=new XMLHttpRequest()
        if (xmlHttp4[rc].overrideMimeType) 
            xmlHttp4[rc].overrideMimeType('text/xml'); 
    }
    else if (window.ActiveXObject) {
        xmlHttp4[rc]=new ActiveXObject("Microsoft.XMLHTTP")
    }
    //return objXMLHttp
    //xmlHttp4[rc]=GetXmlHttpObject()
    if (xmlHttp4[rc]==null) {
        alert("Browser does not support HTTP Request")
        return
    } 
    xmlHttp4[rc].onreadystatechange = alertContents; 
    xmlHttp4[rc].open('POST', gb_urlPostpath, true); 
    xmlHttp4[rc].setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
    xmlHttp4[rc].setRequestHeader('Content-length', postdata.length); 
    xmlHttp4[rc].send(postdata);
    
    function alertContents() { 
        if (xmlHttp4[rc].readyState == 4|| xmlHttp4[rc].readyState=="complete") { 
            
            //show_loading(false);
            document.getElementById(id).innerHTML=xmlHttp4[rc].responseText 
            
            /*
            if (xmlHttp4[rc].status == 200) 
                alert(xmlHttp4[rc].responseText); 
            else 
                alert('There was a problem with the request. Status: ' + xmlHttp4[rc].status); 
            */
        }
    } 
}

function ajaxPostForm(url_path,id,gform) {
    var postdata=new Array();

    pushFormInArray(gform);
    var data_values="";

    for(var key in formInputName)
        data_values=data_values+(data_values!=""?"&":"")+key+"="+formInputName[key];

    postdata=data_values;
    
    grc_aj++;
    var rc = grc_aj;
    
    global_dynamic_id=id;
    gb_urlPostpath=url_path;
    //show_loading(true);
    YAHOO.progress.bar.wait.show();
    
    var objXMLHttp=null
    if (window.XMLHttpRequest) {
        xmlHttp4[rc]=new XMLHttpRequest()
        if (xmlHttp4[rc].overrideMimeType) 
            xmlHttp4[rc].overrideMimeType('text/xml'); 
    }
    else if (window.ActiveXObject) {
        xmlHttp4[rc]=new ActiveXObject("Microsoft.XMLHTTP")
    }
    //return objXMLHttp
    //xmlHttp4[rc]=GetXmlHttpObject()
    if (xmlHttp4[rc]==null) {
        alert("Browser does not support HTTP Request")
        return
    } 
    xmlHttp4[rc].onreadystatechange = alertContents; 
    xmlHttp4[rc].open('POST', gb_urlPostpath, true); 
    xmlHttp4[rc].setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
    xmlHttp4[rc].setRequestHeader('Content-length', postdata.length); 
    xmlHttp4[rc].send(postdata);
    
    function alertContents() { 
        if (xmlHttp4[rc].readyState == 4|| xmlHttp4[rc].readyState=="complete") { 
            
            //show_loading(false);
            YAHOO.progress.bar.wait.hide();
            document.getElementById(id).innerHTML=xmlHttp4[rc].responseText 
            

            //business logic for geting YUI calendars when created after ajax call
            //it is obligatory because after ajax call any YUI bind is lost
            for(var key in formInputName){
                if(key.match(/ajaxyuicalendar/g)){
                    ajaxCalendarYui(formInputName[key]);
                    ajaxContainerYui(formInputName[key]);
                }
                if(key.match(/ajaxaux_selectAllScriptToLoad/g)){
                    eval(formInputName[key]);
                }
            }
            
 
                
            
            //business logic for setting listener to one YUI panel after ajax call
            //many listeners to one div. The listeners are created dynamically through ajax calls
            for(var j=0;j<document.forms.length;j++)
                for(var i=0;i<document.forms[j].elements.length;i++){
                    //if(document.forms[j].elements[i].value.match(/joinDiv/g))
                        //ajaxPanelAddListener(document.forms[j].elements[i].value);
                    if(document.forms[j].elements[i].name.match(/ajaxyuicalendar/g)){
                   
                        ajaxCalendarYui(document.forms[j].elements[i].value);
                        ajaxContainerYui(document.forms[j].elements[i].value);
                        //calendarAditionalScript(document.forms[j].elements[i].value);
                    }
                        
                }
                
            if(url_path){
                //divwin=dhtmlwindow.open('divbox', 'div', 'somediv', '#4: DIV Window Title', 'width=450px,height=300px,left=200px,top=150px,resize=1,scrolling=1')
            }
            
            
        } 
    } 
}

// #############################################################################
// #############################################################################
// #############################################################################

function dynSelValue(selElemId,dynValue,dynText){
    var selElem=document.getElementById(selElemId);
    for(var i=0;i<selElem.length;i++){
        var opt=selElem.options[i];
        if(opt.value==dynValue)
            opt.text=dynText;
    }
}

function pushSelectInArray(sel){
    resetAssociativeArray(formInputName);
    for(var i=0;i<sel.length;i++){
        var opt=sel.options[i];
        pushInArray(opt.value,opt.text);
    }
}

function ajaxPostSel(url_path,id,sel) {
    var postdata=new Array();

    pushSelectInArray(sel);
    var data_values="";

    for(var key in formInputName){
        data_values=data_values+(data_values!=""?"&":"")+key+"="+formInputName[key];

    }

    postdata=data_values;
    
    grc_aj++;
    var rc = grc_aj;
    
    global_dynamic_id=id;
    gb_urlPostpath=url_path;
    //show_loading(true);
    
    var objXMLHttp=null
    if (window.XMLHttpRequest) {
        xmlHttp4[rc]=new XMLHttpRequest()
        if (xmlHttp4[rc].overrideMimeType) 
            xmlHttp4[rc].overrideMimeType('text/xml'); 
    }
    else if (window.ActiveXObject) {
        xmlHttp4[rc]=new ActiveXObject("Microsoft.XMLHTTP")
    }
    //return objXMLHttp
    //xmlHttp4[rc]=GetXmlHttpObject()
    if (xmlHttp4[rc]==null) {
        alert("Browser does not support HTTP Request")
        return
    } 
    xmlHttp4[rc].onreadystatechange = alertContents; 
    xmlHttp4[rc].open('POST', gb_urlPostpath, true); 
    xmlHttp4[rc].setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
    xmlHttp4[rc].setRequestHeader('Content-length', postdata.length); 
    xmlHttp4[rc].send(postdata);
    
    function alertContents() { 
        if (xmlHttp4[rc].readyState == 4|| xmlHttp4[rc].readyState=="complete") { 
            
            //show_loading(false);
            document.getElementById(id).innerHTML=xmlHttp4[rc].responseText 
            

            //business logic for geting YUI calendars when created after ajax call
            //it is obligatory because after ajax call any YUI bind is lost
            for(var key in formInputName){
                if(key.match(/ajaxyuicalendar/g)){
                    ajaxCalendarYui(formInputName[key]);
                    ajaxContainerYui(formInputName[key]);
                }
            }
            
 
            if(id=="saveMenuXML"){
                /*
                var select = document.getElementById('tab_select');
                var index;
                for(var i=0;i<select.length;i++){
                    if(select.options[i].selected){
                        var x = document.getElementById('node_index');
                        for(var k=0;k<x.length;k++){
                            if(x.options[k].value==select.options[i].value){
                                index = x.options[k].text;
                                
                            }
                        }
                    }
                }
                */
                //if(index!=null && index.length>0){
                 window.location.reload(true);
                //}
            }
                
            
            //business logic for setting listener to one YUI panel after ajax call
            //many listeners to one div. The listeners are created dynamically through ajax calls
            for(var j=0;j<document.forms.length;j++)
                for(var i=0;i<document.forms[j].elements.length;i++){
                    //if(document.forms[j].elements[i].value.match(/joinDiv/g))
                        //ajaxPanelAddListener(document.forms[j].elements[i].value);
                    if(document.forms[j].elements[i].name.match(/ajaxyuicalendar/g)){
                   
                        ajaxCalendarYui(document.forms[j].elements[i].value);
                        ajaxContainerYui(document.forms[j].elements[i].value);
                        //calendarAditionalScript(document.forms[j].elements[i].value);
                    }
                        
                }
                
            if(url_path){
                //divwin=dhtmlwindow.open('divbox', 'div', 'somediv', '#4: DIV Window Title', 'width=450px,height=300px,left=200px,top=150px,resize=1,scrolling=1')
            }
            
            
        } 
    } 
}
// #############################################################################
// #############################################################################
// #############################################################################

function ajaxCalendarYui(id){
    var embeddedonHideCatch=""+
        "function yuiCalAjaxonHideCatch(){"+
            "YAHOO.uflow.container.overlay"+id+".hide();"+
        "}";
    var embeddedGetDate=""+
        "function yuiAjaxGetdate(){"+
            "var calDate = YAHOO.uflow.calendar.cal"+id+".getSelectedDates(); " +
            "YAHOO.uflow.calendar.cal"+id+".hide(); "+
            "document.getElementById('"+id+"').value = calDate[0].getDate()+'/'+(calDate[0].getMonth()+1)+'/'+calDate[0].getFullYear(); " +
            "YAHOO.uflow.container.overlay"+id+".hide(); "+
        "}";
    eval(
    "" +
        "YAHOO.uflow.calendar.cal" + id + " = new YAHOO.widget.CalendarGroup('cal" + id + "','calContainer" + id + "', { " +
                    "pages:1, navigator:true,title:'Please make a selection:', close:true  " +
                    "} " +
                ");" +
                "YAHOO.uflow.calendar.cal" + id + ".select();" +
                "YAHOO.uflow.calendar.cal" + id + ".hide(); " +
                "YAHOO.util.Event.addListener('imgcal" + id + "', 'click', YAHOO.uflow.calendar.cal" + id + ".show, YAHOO.uflow.calendar.cal" + id + ", true);" +
                "YAHOO.util.Event.addListener('" + id + "', 'click', YAHOO.uflow.calendar.cal" + id + ".show, YAHOO.uflow.calendar.cal" + id + ", true);" +
                "YAHOO.uflow.calendar.cal" + id + ".selectEvent.subscribe("+embeddedGetDate+", YAHOO.uflow.calendar.cal" + id + ", true); " +
                "YAHOO.uflow.calendar.cal" + id + ".hideEvent.subscribe( " + embeddedonHideCatch + ", YAHOO.uflow.calendar.cal" + id + ", true); " +
                "YAHOO.uflow.calendar.cal" + id + ".render(); "+

    "");
}

function ajaxContainerYui(id){
    eval(
    "YAHOO.uflow.container.overlay" + id + " = new YAHOO.widget.Overlay('divcal" + id + "', { context:['" + id + "','tl','bl'],visible:false,width:'200px' } ); " +
            "YAHOO.uflow.container.overlay" + id + ".render(); " +
            "YAHOO.util.Event.addListener('imgcal" + id + "', 'click', YAHOO.uflow.container.overlay" + id + ".show, YAHOO.uflow.container.overlay" + id + ", true); " +
            "YAHOO.util.Event.addListener('" + id + "', 'click', YAHOO.uflow.container.overlay" + id + ".show, YAHOO.uflow.container.overlay" + id + ", true); "+ 
    ""); 
}


function yuiGetDate(id){
    eval("" +
        "var calDate = YAHOO.uflow.calendar.cal"+id+".getSelectedDates(); " +
        //"hideMultiCalAnchor('divcal"+this.id+"'); " +
        "YAHOO.uflow.calendar.cal"+id+".hide(); "+
        "document.getElementById('"+id+"').value = calDate[0].getDate()+'/'+(calDate[0].getMonth()+1)+'/'+calDate[0].getFullYear(); " +
        "YAHOO.uflow.container.overlay"+id+".hide(); "+
        //"isValidInputDate(this,'"+this.label.getId()+"'); "+
        "");
}

function yuiCalonHideCatch(id){
    eval("" +
       "YAHOO.uflow.container.overlay"+id+".hide();"+
        "");
}

function calendarAditionalScript(id){
    alert("" +
        "function onHideCatch"+id+"(){" +
            "YAHOO.uflow.container.overlay"+id+".hide();"+
        "}"+
        "function getDate"+id+"(){" +
            "var calDate = YAHOO.uflow.calendar.cal"+id+".getSelectedDates(); " +
            //"hideMultiCalAnchor('divcal"+this.id+"'); " +
            "YAHOO.uflow.calendar.cal"+id+".hide(); "+
            "document.getElementById('"+id+"').value = calDate[0].getDate()+'/'+(calDate[0].getMonth()+1)+'/'+calDate[0].getFullYear(); " +
            "YAHOO.uflow.container.overlay"+id+".hide(); "+
            //"isValidInputDate(this,'"+this.label.getId()+"'); "+
        "}");
    
    eval("" +
        "function onHideCatch"+id+"(){" +
            "YAHOO.uflow.container.overlay"+id+".hide();"+
        "}"+
        "function getDate"+id+"(){" +
            "var calDate = YAHOO.uflow.calendar.cal"+id+".getSelectedDates(); " +
            //"hideMultiCalAnchor('divcal"+this.id+"'); " +
            "YAHOO.uflow.calendar.cal"+id+".hide(); "+
            "document.getElementById('"+id+"').value = calDate[0].getDate()+'/'+(calDate[0].getMonth()+1)+'/'+calDate[0].getFullYear(); " +
            "YAHOO.uflow.container.overlay"+id+".hide(); "+
            //"isValidInputDate(this,'"+this.label.getId()+"'); "+
        "}"+
        "");
        //ajaxCalendarYui(id);
        //ajaxContainerYui(id);
}

var ajaxSubDivPanel="ajaxSubDiv";//PROSOXH: oti timh einai edw prepei na einai k sto ajaxSDiv tou GridView.java
function ajaxPanelAddListener(id){
    eval(
        "YAHOO.util.Event.addListener('" + 
            id + "', 'click', YAHOO.uflow.container.overlay" + ajaxSubDivPanel + ".show, YAHOO.uflow.container.overlay" + ajaxSubDivPanel + ", true); " 
    );
}

//general assistant functions
//get the values from multiple select
function get_multiple_values(id)
{

	var obj=document.getElementById(id);
	var slctd=document.getElementById("view_lp_inside");
	var collection="";
	var and_st="";
	var where_clause="";
	document.getElementById("view_lp_inside").innerHTML="";
	var bl=true
	for(i=0;i<obj.options.length;i++)
	{
		
		if(obj.options[i].selected==true)
		{
			if(i==0)
			{
				where_clause="";
				return where_clause;
			}
			else
			{
				if(bl)
					and_st="";
				else
					and_st=" OR "; //<--------GIA TA E3ETASTIKA KENTRA PREPEI NA GINEI AND
				bl=false;
				collection+=" "+obj.options[i].text;
				where_clause+=and_st+"(glossa_1="+obj.options[i].value+" OR "+"glossa_2="+obj.options[i].value+" OR "+"glossa_3="+obj.options[i].value+" OR "+"glossa_4="+obj.options[i].value+" OR "+"glossa_5="+obj.options[i].value+")";
			}
		}
	}

	if(obj.selectedIndex!=-1)
	{
		
		slctd.style.display="";
		document.getElementById("view_lp_inside").innerHTML=" "+collection;
		
	}
	else
		slctd.style.display="none";
	return where_clause;
	
	//document.getElementById("view_lp_inside").innerHTML+="sa"+collection;
	//document.getElementById("view_lp_inside").innerHTML="dsadsa";
}

function convertMultiValuesToOneInput(selectElem,input,delimiter){
    var ret="";
    for(var i=0;i<selectElem.length;i++){
        ret+=selectElem.options[i].text+delimiter;
    }
    input.value=ret;
}

function addItemToSelectElem(value,elem){
    var y=document.createElement('option');
    y.text=value;
    var x=elem;
    try{ 
        x.add(y,null); // standards compliant
    }
    catch(ex){ 
        x.add(y); // IE only
    }
}

function removeItemFromSelectElem(value,elem){
    var x=elem;
    for(var i=0 ; i < x.length;i++){
        if(value==x.options[i].text)
            x.remove(i);
    }
}

function removeAllItemsFromSelectElem(elem){
    var x=elem;
    /*
    for(var i=0 ; i < x.length;i++){
            x.remove(i);
    }*/
    elem.options.length=0;
}

function hexnum(string, tohex, returnAsFormattedString){
    string+='';//forced to string
    if(string.indexOf('rgb')==0){tohex=true;};//forced
    if(string.indexOf('#')==0){tohex=false;};//forced
    string=string.replace(/#/g, '');
    string=string.replace(/^\s*rgb/i, ' ');
    string=string.replace(/[,\(\)]/g, ' ');
    string=string.replace(/\s{2,}/g, ' ');
    string=string.replace(/^[\s\b]+|[\s\b]+$/g, '');
    var output=[];
    if(tohex){//input is a rgb
        string=string.split(' ');
        for(var s=0; s<string.length; s++){
            string[s]=parseInt(string[s]);
            var L=++output.length-1;
            output[L]=string[s].toString(16);
            if(output[L].length==1){output[L]=output[L]+output[L];};
        }
    }
    else{//input is an hex
        string=string.replace(/\s+/g, '');
        var three=(string.length<=3);
        var increment=(!three || string.length==2)?2:1;
        for(var s=0; s<string.length; s+=increment){
            output[++output.length-1]=(!three)?
            parseInt(string.substring(s,s+2), 16):
            parseInt(string.substring(s,s+1)+string.substring(s,s+1), 16);
        }
    };
    if(!returnAsFormattedString){return output;}
    else if(tohex){output='#'+output.join('');}
    else{output='rgb('+output.join(',')+')';};
    return output;
    /*keep this comment to reuse freely:
    http://www.fullposter.com/?1 */
}

function convToHex_old(string){
    init_value=string;
    string+='';//forced to string
    tohex=false;
    if(string.indexOf('rgb')==0){tohex=true;};//forced
    if(string.indexOf('#')==0){tohex=false;};//forced
    string=string.replace(/#/g, '');
    string=string.replace(/^\s*rgb/i, ' ');
    string=string.replace(/[,\(\)]/g, ' ');
    string=string.replace(/\s{2,}/g, ' ');
    string=string.replace(/^[\s\b]+|[\s\b]+$/g, '');
    var output=[];
    if(tohex){//input is a rgb
        string=string.split(' ');
        for(var s=0; s<string.length; s++){
            string[s]=parseInt(string[s]);
            var L=++output.length-1;
            output[L]=string[s].toString(16);
            if(output[L].length==1){output[L]=output[L]+output[L];};
        }
        output='#'+output.join('');
        return output;
    }
    else
        return init_value;
    

}

function convToHex(value){
    tohex=false;
    value=value.toLowerCase()
    if(value.indexOf('rgb')==0){tohex=true;};//forced
    if(value.indexOf('#')==0){tohex=false;};//forced
    if(tohex){//input is a rgb
        value=value.substring(value.indexOf('(')+1);
        var r=value.substring(0,value.indexOf(',')).trim();
        value=value.substring(value.indexOf(',')+1);
        var g=value.substring(0,value.indexOf(',')).trim();
        value=value.substring(value.indexOf(',')+1);
        var b=value.substring(0,value.indexOf(')')).trim();
        return ("#"+toHex(r)+toHex(g)+toHex(b)).toLowerCase();
    }
    else
      return(value);
}

function toHex(N) {
 if (N==null) return "00";
 N=parseInt(N); if (N==0 || isNaN(N)) return "00";
 N=Math.max(0,N); N=Math.min(N,255); N=Math.round(N);
 return "0123456789ABCDEF".charAt((N-N%16)/16)
      + "0123456789ABCDEF".charAt(N%16);
}


function checkboxImg(elem,id){
    var x=document.getElementById(id);

    if(x.value=="T"){
        elem.src="./template/images/icons/unchecked.gif";
        x.value="F";
    }
    else
    if(x.value=="F"){
        elem.src="./template/images/icons/index.png";
        elem.width="20";
        x.value="";
    }
    else
    if(x.value==""){
        elem.src="./template/images/icons/checked.gif";
        x.value="T";
    }
}


function catch_key(e,elem,val,key){
    var keynum
    var keychar
    var numcheck
    var operator
    switch(key)
    {
            case "enter":
                    operator=13;
            break;
            case "tab":
                    operator=9;
            break;
            case "downarrow":
                    operator=40;
            break;
            case "enterFromAutoComplete":
                    operator=13;
            break;
    }
    
    if(window.event) // IE
    {
            keynum = e.keyCode
    }
    else if(e.which) // Netscape/Firefox/Opera
    {
            keynum = e.which
    }

    try{
    if(elem.value!="")
        if(keynum==operator && key=="downarrow")	
            document.getElementById("selectAutoComplete").focus();
    }catch( err ){
    }
    
    if(keynum==operator && key=="tab")	
        document.getElementById("selectAutoComplete").focus();
    if(elem!=""&&elem!=null)
        if(keynum==operator && key=="enterFromAutoComplete"){	
            elem.value=val;
            document.getElementById("autoComplete").style.display="none";
        }
    
}

function keyHandler(e,elemId,containerId,key){
    var container=document.getElementById(containerId);
    var elem=document.getElementById(elemId);
    var keynum
    var keychar
    var numcheck
    var operator
    switch(key)
    {
            case "enter":
                    operator=13;
            break;
            case "autocomplete_Tab":
                    operator=9;
            break;
            case "autocomplete_Downarrow":
                    operator=40;
            break;
            case "autocomplete_Enter":
                    operator=13;
            break;
    }
    
    if(window.event) // IE
    {
            keynum = e.keyCode
    }
    else if(e.which) // Netscape/Firefox/Opera
    {
            keynum = e.which
    }

    try{
        if(elem.value!="" && elem!=null)
            if( keynum==operator && ( key=="autocomplete_Downarrow" || key=="autocomplete_Tab" ) ) { 	
                container.focus();
            }
    }catch( err ){
    }
    
    if(elem!="" && elem!=null) 
        if(key=="autocomplete_Enter" && keynum=="38"){//uparrow
            //check if selected is the first option
            if(container.selectedIndex==0)
                elem.focus();
        }
        
        if(keynum==operator && key=="autocomplete_Enter"){	
            elem.value=container.options[container.selectedIndex].text;
            eval(" YAHOO.uflow.container.overlay" + elemId + ".hide(); ");
        }
    
}

function putValue(elemId1,elemId2){
    var x=document.getElementById(elemId1);
    var y=document.getElementById(elemId2);
    x.value=y.options[y.selectedIndex].text;
}


function validInput(elem){
    
    if(elem.value.match(/[^a-zA-Z0-9]/))
        elem.value=elem.value.replace(/[^a-zA-Z0-9]/g,"");
        //elem.value=elem.value.substr(0,(elem.value.length-1))
}

function hoverOnMouseOver(elem){
    tmpColorForBrd=elem.style.borderColor;
    elem.style.borderColor="gray";
    elem.style.borderWidth="2px";
    elem.style.borderStyle="solid"
}

function hoverOnMouseOut(elem){
    elem.style.borderColor=tmpColorForBrd;
    elem.style.borderWidth="";
    elem.style.borderStyle="";
}


function parseValuesAndAddToSelect(input,delimiter,elem){
        var column="";
        var remain=input;
        while(remain.indexOf(delimiter)>0){
            column=remain.substring(0, remain.indexOf(delimiter));
            remain=remain.substring(remain.indexOf(delimiter)+1);
            addItemToSelectElem(column,elem);
        }
}

function putValueInDiv(value,divid){
    elem=document.getElementById(divid);
    elem.innerHTML=value;
}









