// JavaScript Document

var lbl_required_field_is_empty = "The required field \'~~field~~\' is empty!";
var is_run = false;
function check_registerform_fields() {
	if(is_run)
		return false;
	is_run = true;
	if ( checkRequired(requiredFields)) {
		document.registerform.submit();
		return true;
	}
	is_run = false;
	return false;
}
function checkRequired(lFields, id) {
	if (!lFields || lFields.length == 0)
		return true;

	if (id) {
		for (var x = 0; x < lFields.length; x++) {
			if (lFields[x][0] == id) {
				lFields = [lFields[x]];
				break;
			}
		}
	}

	for (var x = 0; x < lFields.length; x++) {
		if (!lFields[x] || !document.getElementById(lFields[x][0]))
			continue;

		var obj = document.getElementById(lFields[x][0]);
		if ((obj.type == 'text' || obj.type == 'password' || obj.type == 'textarea') && !obj.value.search(/^[\s]*$/gi)) {
			if (lbl_required_field_is_empty != '') {
				alert(substitute(lbl_required_field_is_empty, 'field', lFields[x][1]));
			} else {
				alert(lFields[x][1]);
			}

			if (!obj.disabled && obj.type != 'hidden') {
				checkRequiredShow(obj);
				obj.focus();
			}

			return false;

		}
	}

	return true;
}
function substitute(lbl) {
var x, rg;
	for(x = 1; x < arguments.length; x+=2) {
		if(arguments[x] && arguments[x+1]) {
			rg = new RegExp("\\{\\{"+arguments[x]+"\\}\\}", "gi");
			lbl = lbl.replace(rg,  arguments[x+1]);
			rg = new RegExp('~~'+arguments[x]+'~~', "gi");
			lbl = lbl.replace(rg,  arguments[x+1]);
		}
	}
	return lbl;
}

/*
	Show hidden element and element's parents
*/
function checkRequiredShow(elm) {
	if (elm.style && elm.style.display == 'none') {

		if (elm.id == 'ship_box' && document.getElementById('ship2diff')) {
			/* Exception for Register page */
			document.getElementById('ship2diff').checked = true;
			document.getElementById('ship2diff').onclick();
			
		} else
			elm.style.display = '';
	}

	if (elm.parentNode)
		checkRequiredShow(elm.parentNode);

}


function checkReq(){
	//alert(requiredFields.length);
	if(requiredFields.length < 1) return true;
	for (var x = 0; x < requiredFields.length; x++) {
		if (!document.getElementById(requiredFields[x][0]))
			continue;
		var obj = document.getElementById(requiredFields[x][0]);
		//alert(requiredFields[x][0]);
		if(obj.value ==''){
			return false;
			break;
		}
	}
	return true;
	
}
function checkForm(){
	
	var divs = document.getElementById("errorWindow");
	var str = divs.innerHTML;
	if(str.length == 0 && checkReq()){
		return true;
	}else{
		return false; 
	}
}
var statusBar = 1;
function removeError(name){
	var outs = document.getElementById("errorWindow");
	outs.removeChild(document.getElementById("div_error_"+name));	
}

function createError(name,error){
	var divs = document.getElementsByName("div_error_"+name);
	if(divs.length > 0){ 
		//removeError(name);	
	}else{

		var out = document.getElementById("errorWindow");
		if(statusBar == 1){
			/*var nd = document.createElement("div");
			nd.setAttribute("id", "div_status_bar");
			nd.setAttribute("class", "status_bar");
			nd.innerHTML="Status Bar:";
			out.appendChild(nd);
			statusBar = 0; */
		}
		var nd = document.createElement("div");
		nd.setAttribute("id", "div_error_"+name);
		nd.setAttribute("name", "div_error_"+name);
		nd.setAttribute("class", "error");
		nd.innerHTML =error;
		document.getElementById("statusWindow").innerHTML='';
		out.appendChild(nd);
	}
	
}
function isText(val,f1){
	
	with(val){
		if(value == "" || value ==null ){
			alert("Invalid  "+f1);
			focus();
		}
	}
	return;
}
function isNumeric(val,f1)
{
   var strString = val.value;
   var strValidChars = "0123456789.";
   var strChar;
   var blnResult = true;
   f1 = "<b>"+f1+"</b>";
   if (strString.length == 0) blnResult = false;
  
   for (var i = 0; i < strString.length && blnResult == true; i++)
   {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
      {
         blnResult = false;
      }
   }
   
   if(blnResult){
		removeError(val.name);
   }else{
	   alert(" Invalid Numeric Value");
	   val.focus();
   }
}



function isEmail(field,f1)
{
  with (field)
	{
	 
	var apos=value.indexOf("@")
	var dotpos=value.lastIndexOf(".")
	 f1 = "<b>"+f1+"</b>";
	if (apos < 1 || (dotpos - apos)< 2) {
		alert(" Invalid E-mail Address");
	    return false
	}
  }
}




function visibleBox(id,skipOpenClose) {
	elm1 = document.getElementById("open"+id);
	elm2 = document.getElementById("close"+id);
	elm3 = document.getElementById("box"+id);

	if(!elm3)
		return false;

	if (skipOpenClose) {
		elm3.style.display = (elm3.style.display == "")?"none":"";
	} else if(elm1) {
		if (elm1.style.display == "") {
			elm1.style.display = "none";
			if(elm2)
				elm2.style.display = "";
			elm3.style.display = "none";
			var class_objs = getElementsByClassName('DialogBox');
			for (var i = 0; i < class_objs.length; i++) {
				class_objs[i].style.height = "1%";
			}
		} else {
			elm1.style.display = "";
			if(elm2)
				elm2.style.display = "none";
			elm3.style.display = "";
		}
	}
}

function reset_form(formname, localDef) {
	var x, y, z, localDef, hash_radio;
	var form = document.forms.namedItem(formname);
	if (!form)
		return false;

	var hash_radio = [];

	for (x = 0; x < form.elements.length; x++) {
		var obj = form.elements[x];
		if ((obj.tagName == 'INPUT' || obj.tagName == 'SELECT' || obj.tagName == 'TEXTAREA') && obj.name != '' && obj.type != 'hidden') {
			var changed = false;
			var reset_value = '';
			var found = false;
			for (y = 0; y < localDef.length && !found; y++) {
				if (obj.name == localDef[y][0] || obj.id == localDef[y][0]) {
					reset_value = localDef[y][1];
					found = true;
				}
			}

			if (!found)
				continue;

			if (obj.tagName == 'SELECT') {
				reset_value = reset_value.valueOf();
				var selectedItems = [];
				if (reset_value.length > 0)
					selectedItems = reset_value.split(',');

                for (z = 0; z < obj.options.length && !changed; z++) {
                    for (y = 0; y < selectedItems.length && !changed; y++) {
                        if ((obj.options[z].value == selectedItems[y] || obj.options[z].text == selectedItems[y]) && !obj.options[z].selected)
							changed = true;
					}
				}

				obj.selectedIndex = obj.multiple ? -1 : 0;

				for (z = 0; z < obj.options.length; z++) {
					for (y = 0; y < selectedItems.length; y++) {
						if (obj.options[z].value == selectedItems[y] || obj.options[z].text == selectedItems[y]) {
							obj.options[z].selected = true;
						}
					}
				}

			} else if (obj.tagName == 'INPUT' && obj.type == 'radio') {
				var is_found = false;
				for (z = 0; z < hash_radio.length; z++) {
					if (hash_radio[z][0] == obj.name) {
						is_found = hash_radio[z][1];
						break;
					}
				}
				if (is_found == 'F')
					continue;

				if ((obj.value == reset_value || is_found === false) && !obj.checked)
					changed = true;

				obj.checked = (obj.value == reset_value || is_found === false);
				hash_radio[hash_radio.length] = [obj.name, (obj.value == reset_value) ? "F" : ""];

			} else if (obj.tagName == 'INPUT' && obj.type == 'checkbox') {
				if (obj.checked != reset_value)
					changed = true;

				obj.checked = reset_value;
				
			} else {
				if (obj.value != reset_value)
					changed = true;

				obj.value = reset_value;
			}

			if (!obj.disabled && changed) {
				if (obj.onclick)
					obj.onclick.call(obj);
				if (obj.onchange)
					obj.onchange.call(obj);
			}
		}
	}
}


