// JavaScript Document

//common js validations,
//author: D.Shiva prasad
//date: 03-04-2008
	function trim(str){
		return str.replace(/^\s*|\s*$/g,"");
	}
	
	function isBlank(Element){
		var s = trim(Element.value);
		if(s.length == 0)	return true;			
		return false;
	}
	
	//pass string not element
	function is_blank(str){
		str = trim(str);
		if(str.length == 0)	return true;
		return false;
	}
	
	//isValidDate(day, month, year);
	function isValidDate(day, month, year){
		
		var day = parseInt(day.value);
		var month = parseInt(month.value - 1);
		var year = parseInt(year.value);
		
		var tempDate = new Date();
		tempDate.setFullYear(year,month,day);
				
		var c_day = tempDate.getDate();
		var c_month = tempDate.getMonth();
		var c_year = tempDate.getFullYear();
		
		if((day != c_day) || (month != c_month) || (year != c_year))	return false;
		
		return true;
			
	}
	
	//isValidEmail(html_elment, required(bool, optional, default: true));
	function isValidEmail(Element, required){
		
		//set default required to true;
		if(required == false)	required = false;
		else required = true;

		Element.value = trim(Element.value);
		var email = Element.value;
		
		if(is_blank(email)){
			if(required)	return false;
			else return true;
		}
		
		var email_pattern = /^[^@]+@[^@]+\.(([a-zA-Z]{2}\.[a-zA-Z]{2})|([a-zA-Z]{3}))$/i;
		
		if(email.match(email_pattern) == null)	return false;	
		else return true;
		
		//test is deprecated (but it is faster than match)
		//return email_pattern.test(email);
		
	}
	
	
	//obsolete function use isValidFiletype
	function isValidImage(Element, msg, required){
		//syntax Element: input type = file, msg: will be displayed if validation fails, required: bool, whether image is mandatory or not.
		required = typeof(required)=='undefined'?true:required;		//set default to true.
		
		var img = trimT(Element.value);
		if(img.length == 0){
			if(required){	//required = true, field can't be empty
				alert(msg);
				Element.focus();
				return false;
			}else{
				return true;	//not required, i.e, field can be empty 
			}
		}
		
		var pat = /.*\.(jpg|jpeg|gif|png|bmp)/i;
		if(img.match(pat) == null){
			alert("Only jpeg, gif, png and bmp image types are allowed");
			Element.focus();
			return false;
		}
		return true;
	}
	
	//isValidEntry(element, min(val/false), max(val/false), required)
	function isValidEntry(Element, minLength, maxLength, required){
		
		//set default required to true;
		if(required == false)	required = false;
		else required = true;
		
		Element.value = trim(Element.value);
		
		var str = Element.value;
		
		if(is_blank(str)){	//if not required, return true if blank else false
			if(required)	return false;
			else return true;
		}
		
		if(minLength){
			if(str.length < minLength)	return false;	
		}
		
		if(maxLength){
			if(str.length > maxLength)	return false;	
		}
		
		return true;
	}
	
	//syntax 	isValidFileType(html_element, extensions(separated by '|'), bool)
	//example isValidFileType(frm.myImage, "jpg|gif|png|jpeg", true);
	function isValidFileType(Element, fileExt, required){	
	
		//set default required to true;
		if(required == false)	required = false;
		else required = true;
		
		var file = trim(Element.value);
		if(file.length == 0){
			if(required)	return false;
			else	return true;	//not required, i.e, field can be empty 			
		}
				
		var pat = RegExp(".*\.("+fileExt+")$", "i");
		
		if(file.match(pat) == null)	return false;
		else	return true;
	}
	
	function captureCoordinates(evt){
		
		var evt = window.event || evt;
		var IE = (navigator.appName == "Microsoft Internet Explorer")?true:false;
		var Firefox = (navigator.appName == "Netscape")?true:false;
		
		if(IE){		
			return {x: evt.clientX + document.body.scrollLeft + document.documentElement.scrollLeft - document.body.clientLeft,
				y: evt.clientY + document.body.scrollTop + document.documentElement.scrollTop - document.body.clientTop
			};	
		}
		if(Firefox){
			return {x: evt.pageX, y: evt.pageY }; 
		}
	}
	function pageDimensions() {
	  var myWidth = 0, myHeight = 0;
	  if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	  }
	  return {width: myWidth, height: myHeight }; 
	}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//Adding multiple vals js code
	//Note: before submitting use escape(storeElement.value)
	//		In php file use url_decode function for this value.
	function addMultiVals(srcElementId, showDivId, storeElementId, separator){
	
		var srcElement = document.getElementById(srcElementId);
		var showDiv = document.getElementById(showDivId);
		var storeElement = document.getElementById(storeElementId);
			
		var strToStore = trim(srcElement.value);		
		if(strToStore.length == 0)	return false;	//don't append null or space vals
		if(strToStore == srcElement.title)	return false;	//is useful for text overlay 
		
		//Check for duplicate values
		var storedElements = storeElement.value.split(separator);
		for(var i = 0; i < storedElements.length - 1; i++){
			if(storedElements[i] == strToStore){
				//if you want alert here
				srcElement.value = "";
				srcElement.focus();
				return false;
			}
		}
		
		//storeElement is hidden value to store multiple values separated by separator
		storeElement.value += strToStore+separator;
		
		var temp = strToStore+" <a href='javascript: void(0);' onclick=\"javascript: removeFromMultiVals('"+strToStore+"', '"+showDivId+"', '"+storeElementId+"', '"+separator+"');\">Delete</a><br>";
		
		showDiv.innerHTML += temp;
		
		srcElement.value = "";
		srcElement.focus();
		
	}
	
	function removeFromMultiVals(strToRemove, showDivId, storeElementId, separator){
	
		var showDiv = document.getElementById(showDivId);
		var storeElement = document.getElementById(storeElementId);
		
		var temp = "";
		var temp1 = "";
		var storedElements = storeElement.value.split(separator);
		
		for(var i = 0; i < storedElements.length - 1; i++){
			if(storedElements[i] != strToRemove){
				temp1 += storedElements[i]+separator;
				temp += storedElements[i]+" <a href='javascript: void(0);' onclick=\"javascript: removeFromMultiVals('"+storedElements[i]+"', '"+showDivId+"', '"+storeElementId+"', '"+separator+"');\">Delete</a><br>";
			}
		}
		
		storeElement.value = temp1;
		showDiv.innerHTML = temp;		
		
	}
	
	

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// style="color:#AEAEAE; font-size:10px;"
	function overLayTitleText(id, defaultClass, noDataClass){
		var El = document.getElementById(id);
		
		if(trim(El.value) == ""){
			El.value = El.getAttribute('title');
			El.className = noDataClass;
		}
		
		function handleFocus(){
			var El = (window.event)?window.event.srcElement:this;
			if(trim(El.value) == El.getAttribute('title')){
				El.value = "";
				El.className = defaultClass;
			}
		}
		
		function handleBlur(){
			var El = (window.event)?window.event.srcElement:this;
			if(trim(El.value) == ""){
				El.value = El.getAttribute('title');
				El.className = noDataClass;
			}
		}
		
		
		if(El.addEventListener){
			El.addEventListener("focus", handleFocus, false);
			El.addEventListener("blur", handleBlur, false);
		}
		if(El.attachEvent){
			El.attachEvent("onfocus", handleFocus);
			El.attachEvent("onblur", handleBlur);
		}
	}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	function CheckAll(mainCheck, formName, childCheck){
		var frm = document.getElementById(formName);
		var bool = document.getElementById(mainCheck).checked;
		for(var i = 0; i< frm.elements.length; i++){
			if(frm.elements[i].name == childCheck){
				frm.elements[i].checked = bool;
			}			
		}		
	}
	
	function extractsCheckVals(formName, childCheck){
		var ids = "";
		var frm = document.getElementById(formName);
		for(var i = 0; i< frm.elements.length; i++){
			if(frm.elements[i].name == childCheck){
				if(frm.elements[i].checked == true){
					ids += frm.elements[i].value+",";
				}
			}			
		}
		ids = ids.substr(0, ids.length-1);
		return ids;
	}