function addOption(sel_id, label, value)
{
    var eq_list = document.getElementById(sel_id);
	var new_option = eq_list.options.length;
	eq_list.options[new_option] = new Option(label, value);
	eq_list.options[new_option].label = label;
}
function updateOption(sel_id, label, value, opt_id)
{
    var eq_list = document.getElementById(sel_id);
	eq_list.options[opt_id] = new Option(label, value);
}

function removeCurrentOption(sel_id)
{
	var eq_list = document.getElementById(sel_id);

	l = eq_list.length;
	for (i=0; i<l; i++) {
		if(eq_list.options[i] && eq_list.options[i].selected==true) { eq_list.options[i] = null; i--;}
	}
}

function prepare_field(sel_id)
{
	var eq_list = document.getElementById(sel_id);
	
	for (i=0; i<eq_list.length; i++) {
		eq_list.options[i].selected = true;
	}
}



//// Popup Window Functions /////////////////////////////////////////////////////////////////////

function updateWindowSize()
{
    window.resizeTo(400, document.getElementById('page_bottom').offsetTop+80<900 ? document.getElementById('page_bottom').offsetTop+85 : 700);
}

function save_values(sel_id, btn_edit, btn_remove, label)
{
    var values = new Array();

    // get values from fields
    for(var i=0; i<eqform.elements.length; i++) 
    {
    	if(eqform.elements[i].name!='') 
    	{       	    
    	    if(eqform.elements[i].type=='select-one') values[eqform.elements[i].name] = URLEncode(eqform.elements[i].options[eqform.elements[i].selectedIndex].value);
    	    else if(eqform.elements[i].type=='text') values[eqform.elements[i].name] = URLEncode(eqform.elements[i].value);
    	    else if(eqform.elements[i].type=='checkbox') values[eqform.elements[i].name] = URLEncode((eqform.elements[i].checked ? 1 : 0));
    	    else if(eqform.elements[i].type=='radio') values[eqform.elements[i].name+'_'+eqform.elements[i].value] = eqform.elements[i].checked;
    	    else if(eqform.elements[i].type=='textarea') values[eqform.elements[i].name] = URLEncode(eqform.elements[i].value);
    	    else if(eqform.elements[i].type=='hidden') values[eqform.elements[i].name] = URLEncode(eqform.elements[i].value);
    	}
    }
    values['label'] = label;
    
    // saving data to select option
    if(get['opt_id']) opener.updateOption(sel_id, label, serialize_array(values), get['opt_id'], btn_edit, btn_remove);
    else opener.addOption(sel_id, label, serialize_array(values), btn_edit, btn_remove);

    window.close();
}

function load_values(opt_id, sel_id)
{
    var eq_list = opener.document.getElementById(sel_id);

    if(opt_id!=-1 && eq_list.options[opt_id]) 
    {
        values = unserialize_array(eq_list.options[opt_id].value);

        // put values in the fields
        for(var i=0; i<eqform.elements.length; i++)
        {
            if(eqform.elements[i].name!='')
            {
                if(eqform.elements[i].type=='select-one' && values[eqform.elements[i].name]) make_selected(eqform.elements[i], URLDecode(values[eqform.elements[i].name]));            
                else if(eqform.elements[i].type=='text' && values[eqform.elements[i].name]) eqform.elements[i].value = URLDecode(values[eqform.elements[i].name]);
                else if(eqform.elements[i].type=='checkbox') values[eqform.elements[i].name] && values[eqform.elements[i].name]==1 ? eqform.elements[i].checked=true  : eqform.elements[i].checked=false;
                else if(eqform.elements[i].type=='radio') values[eqform.elements[i].name+'_'+eqform.elements[i].value]=='true' ? eqform.elements[i].checked=true : eqform.elements[i].checked=false;
                else if(eqform.elements[i].type=='textarea' && values[eqform.elements[i].name]) eqform.elements[i].value = URLDecode(values[eqform.elements[i].name]);
                else if(eqform.elements[i].type=='hidden' && values[eqform.elements[i].name]) eqform.elements[i].value = URLDecode(values[eqform.elements[i].name]);
            }
        }
    }
}



function parse_get() {

    var qsParm = new Array();

    var query = window.location.search.substring(1);
    var parms = query.split('&');
    for (var i=0; i<parms.length; i++)
    {
       var pos = parms[i].indexOf('=');

       if (pos > 0)
       {
          var key = parms[i].substring(0,pos);
          var val = parms[i].substring(pos+1);
          qsParm[key] = val;
       }
    }
    
    return qsParm;
}

function serialize_array(values)
{
    var ret = '';
    for (x in values)
    {
		var encoded = values[x];
		encoded = encoded.replace('=', '%3D');
		encoded = encoded.replace('&', '%26');
		if(ret=='') ret+= x+'='+encoded;
        else ret+= '&'+x+'='+encoded;
    }
    return ret;
}

function unserialize_array(value)
{
    var ret = new Array();

    var parms = value.split('&');
    for (var i=0; i<parms.length; i++)
    {
       var pos = parms[i].indexOf('=');

       if (pos > 0)
       {
          var key = parms[i].substring(0,pos);
          var val = parms[i].substring(pos+1);
 		  val = val.replace('%3D', '=');
		  val = val.replace('%26', '&');
          ret[key] = val;
       }
    }
    
    return ret;
}

function make_selected(field, val)
{
    if(field.length) for (i=0; i<field.length; i++) if(field.options[i].value==val) field.options[i].selected = true;
}

function checkDate(DateValue)
{
   var checkstr = "0123456789";
   var Datevalue = "";
   var DateTemp = "";
   var seperator = ".";
   var day;
   var month;
   var year;
   var leap = 0;
   var err = 0;
   var i;
   
   err = 0;
   /* Delete all chars except 0..9 */
   for (i = 0; i < DateValue.length; i++) {
	  if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
	     DateTemp = DateTemp + DateValue.substr(i,1);
	  }
   }
   DateValue = DateTemp;
   /* Always change date to 8 digits - string*/
   /* if year is entered as 2-digit / always assume 20xx */
   if (DateValue.length == 6) {
      DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); }
   if (DateValue.length != 8) {
      err = 19;}
   /* year is wrong if year = 0000 */
   year = DateValue.substr(0,4);
   if (year == 0) {
      err = 20;
   }
   /* Validation of month*/
   month = DateValue.substr(4,2);
   if ((month < 1) || (month > 12)) {
      err = 21;
   }
   /* Validation of day*/
   day = DateValue.substr(6,2);
   if (day < 1) {
     err = 22;
   }
   /* Validation leap-year / february / day */
   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
      leap = 1;
   }
   if ((month == 2) && (leap == 1) && (day > 29)) {
      err = 23;
   }
   if ((month == 2) && (leap != 1) && (day > 28)) {
      err = 24;
   }
   /* Validation of other months */
   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
      err = 25;
   }
   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
      err = 26;
   }
   
   return err;
}

