var message_lock=0;
var pt=10;

function populateSelectByValue (slct,xmlDoc){
	while (slct.options.length>0)
		slct.options[0]=null;
	
	var i;
	for (i=0;i<xmlDoc.childNodes.length;i++){
		slct.options[i]=new Option (get_xml_value (xmlDoc.childNodes[i],"text"),get_xml_value(xmlDoc.childNodes[i],"value"));
		slct.options[i].title = slct.options[i].text;
	}
}

function get_user(in_string){
	var start=in_string.indexOf('user=');
	var stop=in_string.indexOf(';');
	if (start>stop)
		return in_string.substr(start+5);
	else
		return in_string.substr(start+5,stop-(start+5));
}
function get_passwd(in_string){
	var start=in_string.indexOf('passwd=');
	var stop=in_string.indexOf(';');
	if (start>stop)
		return in_string.substr(start+7);
	else
		return in_string.substr(start+7,stop-(start+7));
}


function validate_date(field){
	var datefield;
	var i;
	var err=0;
	var month;
	var day;
	var year;
	var pos;
	var pos2;
	var date_fields = new Array();
	var days = new Array (12);
		
	datefield=trim(field.value);
	
	
	
	days[0]=31;
	days[1]=28;
	days[2]=31;
	days[3]=30;
	days[4]=31;
	days[5]=30;
	days[6]=31;
	days[7]=31;
	days[8]=30;
	days[9]=31;
	days[10]=30;
	days[11]=31;
	
	
	if (datefield.length==0)
		return;
	
	/*get month - day  - year based on slashes*/
	date_fields=datefield.split('/');
	
	month=date_fields[0]*1;
	day=date_fields[1]*1;
	year=date_fields[2]*1;
	
	
	
	if (isNaN(month) || isNaN(day) || isNaN(year)){
		date_err(field,1,0);
		return true;
	}

	/*check month for 1 - 12*/
	if (month<1 || month > 12){
		date_err(field,1,0);
		return true;
	}
	if (month<10)
		month='0'+month;
	
	/*add 2000 to year if 2 digit was entered*/
	if (year<100)
		year=year+2000;
	
	/*check for leap year*/
	if (year % 4 ==0)
		days[1]=29;
	
	/*check for valid number of days*/
	if (day > days[month-1] || day<1){
		date_err(field,1,0);
		return true;
	}
	
	if (day < 10)
		day='0'+day;
	

	field.value=month + '/' + day + '/' + year;
	return false;
}

function validate_seperate(line){
	var i;
	var err=0;
	var month;
	var day;
	var year;
	var pos;
	var pos2;
	var date_fields = new Array();
	var days = new Array (12);
		
	
	
	
	
	days[0]=31;
	days[1]=28;
	days[2]=31;
	days[3]=30;
	days[4]=31;
	days[5]=30;
	days[6]=31;
	days[7]=31;
	days[8]=30;
	days[9]=31;
	days[10]=30;
	days[11]=31;
	
	
	date_fields[0]=document.getElementById("month"+line);
	date_fields[1]=document.getElementById("day"+line);
	date_fields[2]=document.getElementById("year"+line);
	
	if (date_fields[0].length==0 && date_fields[1].length==0 && date_fields[2].length==0)
		return false;
	
	month=date_fields[0].value * 1;
	day=date_fields[1].value * 1;
	year=date_fields[2].value * 1;
	
	
	if (isNaN(month) || isNaN(day) || isNaN(year)){
		date_err(date_fields[0],0,line);
		return true;
	}

	/*check month for 1 - 12*/
	if (month<1 || month > 12){
		date_err(date_fields[0],0,line);
		return true;
	}
	if (month<10)
		month='0'+month;
	
	/*add 2000 to year if 2 digit was entered*/
	if (year<2000)
		year=year+2000;
	
	/*check for leap year*/
	if (year % 4 ==0)
		days[1]=29;
	
	/*check for valid number of days*/
	if (day > days[month-1] || day<1){
		date_err(date_fields[0],0,line);
		return true;
	}
	
	if (day < 10)
		day='0'+day;
	
	date_fields[0].value=month;
	date_fields[1].value=day;
	date_fields[2].value=year;

	return false;
}


function handleEnter (field, event) {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (keyCode == 13) {
		var i;
		for (i = 0; i < field.form.elements.length; i++)
			if (field == field.form.elements[i])
				break;
		while (1){
			i = (i + 1) % field.form.elements.length;
			if (i > field.form.elements.length)
				break;	
			if (field.form.elements[i].type!='hidden'){
				field.form.elements[i].focus();
				break;
			}
		}
		return false;
	} 
	else
		return true;
}


function handleEnterSubmit (field, event, line) {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (keyCode == 13) {
		var i;
		for (i = 0; i < field.form.elements.length; i++)
			if (field == field.form.elements[i])
				break;
		i = (i + 1) % field.form.elements.length;
		field.form.elements[i].focus();
		if (validate_seperate(line)==false){
			field.form.submit();
		}
		return false;
	} 
	else
		return true;
}


function trim(TRIM_VALUE){
if(TRIM_VALUE.length < 1){
return"";
}
TRIM_VALUE = RTrim(TRIM_VALUE);
TRIM_VALUE = LTrim(TRIM_VALUE);
if(TRIM_VALUE==""){
return "";
}
else{
return TRIM_VALUE;
}
} //End Function

function RTrim(VALUE){
var w_space = String.fromCharCode(32);
var v_length = VALUE.length;
var strTemp = "";
if(v_length < 0){
return"";
}
var iTemp = v_length -1;

while(iTemp > -1){
if(VALUE.charAt(iTemp) == w_space){
}
else{
strTemp = VALUE.substring(0,iTemp +1);
break;
}
iTemp = iTemp-1;

} //End While
return strTemp;

} //End Function

function LTrim(VALUE){
var w_space = String.fromCharCode(32);
if(v_length < 1){
return"";
}
var v_length = VALUE.length;
var strTemp = "";

var iTemp = 0;

while(iTemp < v_length){
if(VALUE.charAt(iTemp) == w_space){
}
else{
strTemp = VALUE.substring(iTemp,v_length);
break;
}
iTemp = iTemp + 1;
} //End While
return strTemp;
} //End Function

function date_err (field,erase,line){
	var orig;
	alert ("Invalid Date Format");
	if (erase==1){
		field.value="";
	} else {
		orig=document.getElementById('orig_date'+line);
		reset_date(line,orig.value);
	}
		
	for (i = 0; i < field.form.elements.length; i++)
		if (field == field.form.elements[i])
			break;
	
	field.form.elements[i].focus();
}


function reset_date(line,date){
	var month;
	var day;
	var year;
	
	
	
	month=document.getElementById('month'+line);
	day=document.getElementById('day'+line);
	year=document.getElementById('year'+line);
	
	month.value=date.substring(0,2);
	day.value=date.substring(3,5);
	year.value=date.substring(6);
}

function set_height(div,offset){
	if (typeof(window.innerHeight)!='number'){
		var h=document.body.clientHeight;
	} else {
		var h=window.innerHeight;
	}
	
	document.getElementById(div).style.height=(h - offset);
}

function parse_xml(xmlDoc){
	
	var val;
	for (i=0;i<xmlDoc.childNodes.length;i++){
		if (xmlDoc.childNodes[i].childNodes.length>0){
			val=xmlDoc.childNodes[i].childNodes[0].nodeValue;
		} else {
			val='';
		}

		switch (document.getElementById(xmlDoc.childNodes[i].nodeName).type){
			case 'radio':
			case 'checkbox':
				document.getElementById(xmlDoc.childNodes[i].nodeName).checked=true;
				break;
			case undefined:
				document.getElementById(xmlDoc.childNodes[i].nodeName).innerHTML=val;
				break;	
			case 'select':
				var slct=document.getElementById(xmlDoc.childNodes[i].nodeName);
				for (op=0;op<slct.options.length-1;op++){
					if (slct.options[i].value==val)
						slct.options[i].selected=true;
				}
				break;
				default:
				document.getElementById(xmlDoc.childNodes[i].nodeName).value=val;
				break;
		}
		 
	}
}

function get_xml_value(xmlDoc,tag){

	var val;
	for (i=0;i<xmlDoc.childNodes.length;i++){
		if (xmlDoc.childNodes[i].childNodes.length>0){
			val=xmlDoc.childNodes[i].childNodes[0].nodeValue;
		} else {
			val='';
		}

		if (trim(xmlDoc.childNodes[i].nodeName)==trim(tag))
			return val;
	}
}

function send_message(message){
	if (message_lock==1)
		return;
	if (typeof(window.innerHeight)=='number'){
		var h=window.innerHeight;
		var w=window.innerWidth;
	} else {	
		var h=document.body.clientHeight;
		var w=document.body.clientWidth;
	}
	
	var msg=document.getElementById('message');
	msg.style.left=(w / 2) - 200;
	msg.style.top=(h / 2) - 50;
	msg.innerHTML='<center><font class="title">' + message + '</font></center>';
	msg.style.display='block';
}

function clear_message(){
	if (message_lock==1)
		return;
	var msg=document.getElementById('message');
	msg.innerHTML='';
	msg.style.display='none';
}

function get_form(post_form){
	var parms="";
	var added=0;
	var check_box;
			
	for (i=0;i<post_form.elements.length;i++){
		check_box=(post_form.elements[i].type=="radio" || post_form.elements[i].type=="checkbox");
		if ((check_box && post_form.elements[i].checked) || (!check_box)){
			if (added>0)
				parms+='&';
			parms+= urlencode(post_form.elements[i].name) + '=' + urlencode(post_form.elements[i].value);
			added++;
		}
	}
	
	return parms;
}
			
function get_window_height(){
	if (typeof (window.innerHeight)=='number'){
		return window.innerHeight;
	}else{
		return document.documentElement.clientHeight;
	}
}
	
function get_window_width(){
	if (typeof(window.innerWidth)=='number')
		return window.innerWidth;
	else
		return document.body.clientWidth;
}

function findPos(obj) {
	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];
}

function modRule(size){
	pt+=size;
	//alert (pt);
        if (!document.styleSheets) return;
        var thecss = new Array();
        if (document.styleSheets[0].cssRules)  // Standards Compliant
        {
           thecss = document.styleSheets[0].cssRules;
        }
        else
        {         
           thecss = document.styleSheets[0].rules;  // IE
        }
        for (i=0;i<thecss.length;i++)
        {
       	//	alert (thecss[i].selectorText + thecss[i].selectorText.length); 	
           if (trim(thecss[i].selectorText.toLowerCase())=='.body')
           {
             thecss[i].style.cssText="background-color:#" + size + ";";
             //background-image:url('./images/background.gif');";
           }
           
        }
        
}

/**
 * Expand Class
 * Class to expand/shrink a div
 * @param div = dom pointer to div
 * @param max = max height to expand to
 * **/

function Expand (div,max){
  	this.div = div;
	this.max = max;
	this.delay = 10;  /*number of milliseconds of delay between growth and shrink events*/
	this.growAmount = 10;  /*amount to grow/shrink div by each iteration*/
	this.min = 10; /*min size to shrink to before hiding div*/
	
	this.expanded = false;
	this.growHook = null;  /*function to run after grow is complete*/
	this.shrinkHook = null; /*function to run after shrink is complete*/
		
	var expand = this;

	
	this.grow = function (){
  		expand.div.style.display = 'block';
	  	if (expand.div.offsetHeight < expand.max){
		  	expand.div.style.height = expand.div.offsetHeight + expand.growAmount + 'px';
			setTimeout (expand.grow,expand.delay);
		} else {
		  	expand.expanded = true;
			if (expand.growHook){
			  	expand.growHook();
			}
		}
	}

	this.shrink = function(){
  		
		if (expand.div.offsetHeight > expand.min){
		  	
	  		expand.div.style.height = expand.div.offsetHeight - expand.growAmount + 'px';
			setTimeout (expand.shrink,expand.delay);
		} else {
	  		expand.div.style.display = 'none';
			expand.expanded = false;
			if (expand.shrinkHook){
			  	expand.shrinkHook();
			}
		}
	}
}

function clear_form (frm){
	var i;
	for (i=0;i<frm.elements.length;i++){
		switch (frm.elements[i].type){
			case 'hidden':
			case 'text':
			case 'textarea':
			case 'password':
				frm.elements[i].value='';
				break;
			case 'select-one':
				frm.elements[i].selectedIndex=0;
				break;
			case 'checkbox':
				frm.elements[i].checked=false;
		}
	}
}

/**
 * Find current value of radio button group
 * @param name -string - name of radio button group
 * Returns string value
 * **/

function getRadioValue (name){
  	var retValue = '';
  	var radio = document.getElementsByTagName ("input");
	for (var i=0;i<radio.length;i++){
	  	if (radio[i].type == 'radio'){
		  	if (radio[i].name == name && radio[i].checked){
			 	retValue = radio[i].value;
			}
		}
	}
	return retValue;
}


/**
 * Onload functions
 * @param scriptName - string is the SERVER['REDIRECT_URL'] in PHP
 * Format is /<script>/
 * **/
function onloadFunction(scriptName){
  	send_http("/support/link_categories.php",'menu_link_categories');
	send_http("/support/current_year.php",'menu_current_year');
  	switch (scriptName){
	  case '/news-article/':
	    	embedPlayer();
		break;
	  case '/demonstration-gardens/':
	    	loadMap();
		break;
	  case '/events/':
	    	loadUpcoming();
		break;
	  case '/where-to-buy/':
	    if (!queryString.user){
	    	searchCategory(queryString.category);
	    } else {
	      	getUser (queryString.user);
	    }
		break;
	  case '/newsletter-archive/':
	    if (!queryString){
	      	initScreen();
	    } else {
	      	loadCampaign(queryString.id,queryString.title);
	    }
	  case '/plant-search/':
	    	initScreen();
	    	break;
	  case '/download-design/':
	    	initScreen();
		break;
	  case '/photo-contest/':
	    	initScreen();
		break;
		
		  
	    
	}
}

/**
 * email mask
 * @param - name 
 * @param - domain
 * @param - base
 * **/

function emailMask (name,domain,base){
  	return name + '@' + domain + '.' + base;
}

function validate_boxes (boxen){
	var ok_flag=1;
	for (i=0;i<boxen.length;i++){
		if (trim(document.getElementById(boxen[i]).value)==''){
			document.getElementById(boxen[i]).style.backgroundColor='red';
			ok_flag=0;
		} else {
			document.getElementById(boxen[i]).style.backgroundColor='white';
		}
	}
	
	if (!ok_flag){
		alert ('Please fill in all required fields.');
	}
	
	return ok_flag;
}

function masterSearch(){
  	self.location='/master-search?query=' + urlencode(document.getElementById('master_search').value);
}

function masterSearchKeyPress(event){
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (keyCode == 13) {
		masterSearch();
	}
}
