//################################################################################
// Use : this function removes unnecessary space from a string
// Arguments
// str: string to trim
///#################################################################################
function trim(str)
{
   return str.replace(/^\s*|\s*$/g,"");
}

//################################################################################
//Use : This function is used to validate the String according to a type
//Arguments
//str: string to validate
//type: type of string
//#################################################################################
function validateString(str, type)
{
	//var entityStr = EntitiesToText("&#192;&#193;&#194;&#195;&#196;&#197;&#198;&#199;&#200;&#201;&#202;&#203;&#204;&#205;&#206;&#207;&#208;&#209;&#210;&#211;&#212;&#213;&#214;&#217;&#218;&#219;&#220;&#221;&#224;&#225; &#226;&#227;&#228;&#229;&#231;&#232;&#233;&#234;&#235;&#236;&#237;&#238;&#239;&#241;&#242;&#243;&#244;&#245;&#246;&#249;&#250;&#251;&#252;&#253;&#255;&#256;&#257;&#258;&#259;&#260;&#261;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#270;&#271;&#272;&#273;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#292;&#293;&#294;&#295;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#305;&#306;&#307;&#308;&#309;&#310;&#311;&#312;&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#323;&#324;&#325;&#326;&#327;&#328;&#329;&#330;&#331;&#332;&#333;&#334;&#335;&#336;&#337;&#338;&#339;&#340;&#341;&#342;&#343;&#344;&#345;&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#354;&#355;&#356;&#357;&#358;&#359;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#372;&#373;&#374;&#375;&#376;&#377;&#378;&#379;&#380;&#381;&#382;&#383;");
	//alert(entityStr);
	if(type == "strspace")    			//Only Characters and Spaces are allowed
		reg = "^[A-Za-z\\s]*$";

	if(type == "str")					//Only Characters are allowed
		reg = "^[A-Za-z]*$";

	if(type == "strnumspace")			//Only Characters, number and Spaces are allowed
		reg = "^[A-Za-z0-9\\s]*$";

	if(type == "strnum")				//Only Characters and numbers are allowed
		reg = "^[A-Za-z0-9]*$";

	if(type == "userid")				//Only Characters and Numbers are allowed but first letter should be character
		reg = "^[A-Za-z]+[A-Za-z0-9]*$";

	if(type == "numspace")				//Only Characters and Spaces are allowed
		reg = "^[0-9\\s]*$";

	if(type == "num")					//Only Numbers are allowed
		reg = "^[0-9]*$";

	if(type == "spacebetween")			//Only Spaces are there in Between
		reg = "[\\s]+";

	if(type == "email")					//Valid Email ID a@b.c
		reg = "^(([a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9])|([a-zA-Z0-9]))@(([a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9])|([a-zA-Z]))\\.(([a-zA-Z][a-zA-Z\\.]*[a-zA-Z])|([a-zA-Z]))$";

	if(type == "telephone")				//Valid Telephone Number 	+ (91) (120) 3054300
		reg = "^((\\+{0,1}([0-9\\s\\-\\.])*[0-9]+))$";

	if(type == "weburl")				//Valid Web URL
		reg = "^(www\\.){1}(([a-zA-Z0-9][\\w\\.\\-]*[a-zA-Z0-9])|([a-zA-Z]))\\.(([a-zA-Z][a-zA-Z\\.]*[a-zA-Z])|([a-zA-Z]))$";

	if(type == "strnumspacedot")		//Only Characters, number, spaces and dot are allowed
		reg = "^[A-Za-z0-9\\s\\.]*$";

	if(type == "address")
		reg = "^[A-Za-z0-9\\s\\.&\-\/:\\\\]*$";

	//alert(reg);
	str = trim(str);
	var myReg = new RegExp(reg);
	return str.match(myReg);
}

function validateElement(elementRef, isCompulsory, type, msg)
{
	if(elementRef.parentNode)
	{
		tdRef = elementRef.parentNode;
	}
	else if(elementRef.parentElement)
	{
		tdRef = elementRef.parentElement;
	}

	if(isCompulsory && trim(elementRef.value) == "")
	{
		displayMessage(tdRef,'Can not be left blank.');
		//elementRef.focus();
		return false;
	}

	else if(isCompulsory && trim(elementRef.value) != "")
	{
		eraseMessage(tdRef);
	}
	if(type != '')
	{
		if(!validateString(elementRef.value,type))
		{
			displayMessage (tdRef, msg);
			return false;
		}
		else
		{
			eraseMessage(tdRef);
		}
	}
	return true;
}

function displayMessage(tdRef, msg)
{
	var errSpanArray = tdRef.getElementsByTagName('span');
	if(errSpanArray.length > 0)
	{
		errSpanArray[0].innerHTML = msg;
	}
	else
	{
		var tempHTML = tdRef.innerHTML;
		tdRef.innerHTML = tempHTML + "<br><span class='errMsg'>" + msg + "</span>";
	}
}

function eraseMessage(tdRef)
{
		var errSpanArray = tdRef.getElementsByTagName('span');
		if(errSpanArray.length > 0)
		{
			errSpanArray[0].innerHTML = "";
		}
}

function selectDeselectAll(formRef, totalRecords)
{
	if(formRef.checkAll.checked==true)
	{
		for(i=0; i<totalRecords; i=i+1)
		{
			formRef.elements["listingCheckBox["+i+"]"].checked = true;
		}
	}
	else
	{
		for(i=0; i<totalRecords; i=i+1)
		{
			formRef.elements["listingCheckBox["+i+"]"].checked = false;
		}
	}
}


function validateDeleteRecords(formRef, totalRecords)
{
	for(i=0; i<totalRecords; i=i+1)
	{
		if(formRef.elements["listingCheckBox["+i+"]"].checked == true)
		{
			//var msgVal = document.getElementById("messageDiv");
			//msgVal.innerHTML = "";
			return true;
		}
	}
	var msgVal = document.getElementById("messageDiv");
	msgVal.innerHTML = "No records selected to delete.";
	return false;
}

function validateSeletedRecords(formRef, totalRecords)
{
	for(i=0; i<totalRecords; i=i+1)
	{
		if(formRef.elements["listingCheckBox["+i+"]"].checked == true)
		{
			return true;
		}
	}
	var msgVal = document.getElementById("messageDiv");
	msgVal.innerHTML = "No records selected.";
	return false;
}

function validateSelect(formRef, totalRecords)
{

	for(i=0; i<totalRecords; i=i+1)
	{
		if(formRef.elements["listingCheckBox["+i+"]"].checked == true)
		{
			//var msgVal = document.getElementById("messageDiv");
			//msgVal.innerHTML = "";
			formRef.submit();
			//return true;
		}
	}
	var msgVal = document.getElementById("messageDiv");
	msgVal.innerHTML = "No records selected to send the message.";
	return false;
}

function checktype(elementRef,image_type, msg)
{
	if(elementRef.parentNode)
	{
		tdRef = elementRef.parentNode;
	}
	else if(elementRef.parentElement)
	{
		tdRef = elementRef.parentElement;
	}
	image_type = image_type.toLowerCase();
	if(image_type=="jpg" || image_type=="gif" || image_type=="jpeg")
	{
		eraseMessage(tdRef);
	}
	else
	{
		displayMessage(tdRef, msg);
		return false;
	}
	return true;
}

function equality(elementRef, elementRef1, msg)
{
	if(elementRef1.parentNode)
	{
		tdRef = elementRef1.parentNode;
	}
	else if(elementRef1.parentElement)
	{
		tdRef = elementRef1.parentElement;
	}

	if(elementRef.value!=elementRef1.value)
	{
		displayMessage(tdRef, msg);
		return false;
	}
	else
	{
		eraseMessage(tdRef);
	}

	return true;
}

function validateComboElement(elementRef, msg)
{
	if(elementRef.parentNode)
	{
		tdRef = elementRef.parentNode;
	}
	else if(elementRef.parentElement)
	{
		tdRef = elementRef.parentElement;
	}

	if(trim(elementRef.value) == "0")
	{
		displayMessage(tdRef, msg);
		//elementRef.focus();
		return false;
	}

	else if(trim(elementRef.value) != "0")
	{
		eraseMessage(tdRef);
	}
	return true;
}

function onlyDigits(e)
{
	var whichCode = (window.Event) ? e.which : e.keyCode;
	if(String.fromCharCode(whichCode) != ' ' && String.fromCharCode(whichCode) >= 0 && String.fromCharCode(whichCode) <= 9)
		return true;
	return false;
}

function onlyDigitsAndDot(e,elementRef)
{
	var whichCode = (window.Event) ? e.which : e.keyCode;

	if(whichCode==8 || whichCode==0)
		return true;

	//alert((elementRef.value.length - elementRef.value.lastIndexOf('.')));
	if((String.fromCharCode(whichCode) != ' ' && String.fromCharCode(whichCode) >= 0 && String.fromCharCode(whichCode) <= 9) || String.fromCharCode(whichCode) == '.' || String.fromCharCode(whichCode) == '-')
	{
		if(String.fromCharCode(whichCode) == '.' && elementRef.value.indexOf('.') >= 0)
			return false;

		if(String.fromCharCode(whichCode) == '-' && elementRef.value.indexOf('-') >= 0)
			return false;

		//else if(elementRef.value.lastIndexOf('.')>=5)
			//return false;
		else
			return true;
	}

	return false;
}
