var sMissingErrMsg = "";
var sInvalidErrMsg = "";

function validInput(evt)
{
	sElement = evt["srcElement"]["obj"];
	if(sElement){
		if(sElement.value!=""){
			sElement.className = sElement.className.replace("invalidInput","");
		}
	}
}

function attachInputEventsElements(objForm,sTagNames)
{
	var arrElements = objForm.getElementsByTagName(sTagNames);
	for(n=0;n<arrElements.length;n++){
		if(arrElements[n].attachEvent){
			arrElements[n].attachEvent("onkeyup",validInput);
			arrElements[n].obj = arrElements[n];
		}else{
			arrElements[n].addEventListener("keyup",function (){
				if(this.value!=""){
					this.className = this.className.replace("invalidInput","");
				}
			},false);
		}
	}
}

function validatePage(objForm)
{
	sMissingErrMsg = "";
	sInvalidErrMsg = "";
	var sErrMsg = ""
	bSetFocus = false;
	validateElements(objForm,"input");
	validateElements(objForm,"select");
	validateElements(objForm,"textarea");
	if(sMissingErrMsg!=""){
		sErrMsg = sErrMsg + "Following information(s) is missing: \n" + sMissingErrMsg;
	}
	if(sInvalidErrMsg!=""){
		sErrMsg = sErrMsg + "Following information(s) is invalid: \n" + sInvalidErrMsg;
	}
	if(sErrMsg!==""){
		sErrMsg = replaceAll(sErrMsg, "_", " ")
		alert(sErrMsg);
		return false;
	}
	return true;
}

function replaceAll(sMainStr, sReplaceWhat, sReplaceWith)
{
	while(sMainStr.indexOf(sReplaceWhat)>-1){
		sMainStr = sMainStr.replace(sReplaceWhat,sReplaceWith);
	}
	return sMainStr;
}

function validateElements(objForm,sElementName)
{	
	var arrElements = objForm.getElementsByTagName(sElementName);
	for(n=0;n<arrElements.length;n++){
		if(arrElements[n].className.indexOf("required")>-1 && arrElements[n].value==""){
			sMissingErrMsg = sMissingErrMsg + "      " + arrElements[n].name +"\n";
			arrElements[n].className = arrElements[n].className + " invalidInput";
			attachInputEvents(arrElements[n]);
		}
		if(arrElements[n].className.indexOf("Num")>-1 && arrElements[n].value!="" && fSafeNum(arrElements[n].value)==0 && isNaN(arrElements[n].value)){
			sInvalidErrMsg = sInvalidErrMsg + "      " + arrElements[n].name +"\n";
			arrElements[n].className = arrElements[n].className + " invalidInput";
			attachInputEvents(arrElements[n]);
		}
		if(arrElements[n].className.indexOf("Email")>-1 && arrElements[n].value!="" && (arrElements[n].value.indexOf("@")==-1 ||arrElements[n].value.indexOf(".")==-1)){
			sInvalidErrMsg = sInvalidErrMsg + "      " + arrElements[n].name +"\n";
			arrElements[n].className = arrElements[n].className + " invalidInput";
			attachInputEvents(arrElements[n]);
		}
		if(arrElements[n].className.indexOf("MobilePhone")>-1 && arrElements[n].value!=""){
			var sPhoneNumber = arrElements[n].value;
			sPhoneNumber = replaceAll(sPhoneNumber , ",", "")
			sPhoneNumber = replaceAll(sPhoneNumber , "+", "")
			sPhoneNumber = replaceAll(sPhoneNumber , " ", "")
			sPhoneNumber = replaceAll(sPhoneNumber , "(", "")
			sPhoneNumber = replaceAll(sPhoneNumber , ")", "")
			sPhoneNumber = replaceAll(sPhoneNumber , "-", "")
			if(isNaN(sPhoneNumber) || sPhoneNumber.length<10){
				sInvalidErrMsg = sInvalidErrMsg + "      " + arrElements[n].name +"\n";
				arrElements[n].className = arrElements[n].className + " invalidInput";
				attachInputEvents(arrElements[n]);
			}
		}
		if(arrElements[n].className.indexOf("HomePhone")>-1 && arrElements[n].value!=""){
			var sPhoneNumber = arrElements[n].value;
			sPhoneNumber = replaceAll(sPhoneNumber , ",", "")
			sPhoneNumber = replaceAll(sPhoneNumber , "+", "")
			sPhoneNumber = replaceAll(sPhoneNumber , " ", "")
			sPhoneNumber = replaceAll(sPhoneNumber , "(", "")
			sPhoneNumber = replaceAll(sPhoneNumber , ")", "")
			sPhoneNumber = replaceAll(sPhoneNumber , "-", "")
			if(isNaN(sPhoneNumber) || sPhoneNumber.length<6){
				sInvalidErrMsg = sInvalidErrMsg + "      " + arrElements[n].name +"\n";
				arrElements[n].className = arrElements[n].className + " invalidInput";
				attachInputEvents(arrElements[n]);
			}
		}
		if((sMissingErrMsg!="" || sInvalidErrMsg!="") && !bSetFocus){
			arrElements[n].focus();
			bSetFocus = true;
		}
		
	}
}

function attachInputEvents(sObj)
{
	if(sObj.attachEvent){
		sObj.attachEvent("onkeyup",validInput);
		sObj.obj = sObj;
	}else{
		sObj.addEventListener("keyup",function (){
			if(this.value!=""){
				this.className = this.className.replace("invalidInput","");
			}
		},false);
	}
}

function fSafeNum(str){
	str = str + "";
	str = replaceAll(str,",","");
	if(isNaN(str) || str==""){
		return 0;
	} else {
		return parseFloat(str);
	}
}

//Ajax Drop Down Request Start Here

function sendDropDownRequest(sURL, sParam, sDropDown) {
	var sURL = sURL;
	var sParam = sParam;
	if (sParam!='') {
		sURL = sURL + '?' + sParam;
	}
	populateDropDown(sDropDown, sURL);
}

var gsDropDownID = "";
function populateDropDown(sDropDownID, sURL) {
	gsDropDownID = sDropDownID;
	var e = document.getElementById(sDropDownID)
	if(e)
	{
		xmlhttp=GetXmlHttpObject();
		if (xmlhttp==null)
		{
		  alert ("Your browser does not support XMLHTTP!");
		  return;
		}
		xmlhttp.onreadystatechange=stateChanged;
		xmlhttp.open("GET",sURL,true);
		xmlhttp.send(null);
	}		
}

function stateChanged() {
	if (xmlhttp.readyState==4)
	{
	   var e = document.getElementById(gsDropDownID)
	   if(e)
	   {
		   e.length = 1;
		   sResponseText = xmlhttp.responseText;
		   sResponseTextArr = sResponseText.split("~");
		
		   for(n=0;n<sResponseTextArr.length;n++)
		   {
			   sResponseTextArr2 = sResponseTextArr[n].split("==");
			   try
			   {
				   e.add(new Option(sResponseTextArr2[0], sResponseTextArr2[1]), null);
			   }
			   catch(ex)
			   {
				   e.add(new Option(sResponseTextArr2[0], sResponseTextArr2[1]));
			   }
		   }
		}			  
	}
}

function GetXmlHttpObject() {
	if (window.XMLHttpRequest)
	{
	  // code for IE7+, Firefox, Chrome, Opera, Safari
	  return new XMLHttpRequest();
	}
	if (window.ActiveXObject)
	{
	  // code for IE6, IE5
	  return new ActiveXObject("Microsoft.XMLHTTP");
	}
	return null;
}

//Ajax Drop Down Request End Here

//Ajax Page Request Start Here

function SendAjaxReq(sRequestFile, sParams, sDivID) {
	var sURL = sRequestFile
	sParams  = sParams + "&ref="+Math.floor(Math.random()*10001)
	sURL = sURL + "?" + sParams;
	SendAjaxRequestByURL(sURL, sDivID)
}

//Start Ajax Request For Form Elements. This function gets values from form automalically.

function SendAjaxRequest(sRequestFile, sAction, objForm, sDivID)
{
	var sURL = sRequestFile
	sParams = getFormElements(objForm);
	sParams  = sAction + '&'+ sParams + "&ref="+Math.floor(Math.random()*10001)
	sURL = sURL + "?" + sParams;
	SendAjaxRequestByURL(sURL, sDivID)
}

//End Ajax Request For Form Elements. This function gets values from form automalically.

gsDivID = "";
function SendAjaxRequestByURL(sURL, sDivID)
{
	gsDivID = sDivID;
	var e = document.getElementById(gsDivID);
	if(e){
		e.style.display='';
		e.innerHTML = "<img src=\"imgs/ajax-loader.gif\" border=\"0\">";
		xmlHTTP=GetXmlHttpObject();
		if (xmlHTTP==null){
		  alert ("Your browser does not support XMLHTTP!");
		  return;
		}
		nPOS = sURL.indexOf("?");
		if(nPOS>-1){
			sParams = sURL.substring(nPOS+1);
			sURL = sURL.substring(0,nPOS);
		}
		xmlHTTP.open("POST",sURL,true);
		xmlHTTP.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlHTTP.setRequestHeader("Content-length", sParams.length);
		xmlHTTP.setRequestHeader("Connection", "close");
		xmlHTTP.onreadystatechange=UpdateAjaxRequest;
		xmlHTTP.send(sParams);
	}
}

function UpdateAjaxRequest()
{
	if (xmlHTTP.readyState==4){
		if (gsDivID!="") {
			var e = document.getElementById(gsDivID);
			if(e){
				var sResponseText = xmlHTTP.responseText;
				e.innerHTML =  sResponseText;
				
				nPaymentPOS = sResponseText.indexOf("<!--ShowNewsletter:-->");
				if(nPaymentPOS>-1) {
					document.getElementById('Email_ID').value='';
					document.getElementById('Email_ID').focus();
				}

				nStockPOS = sResponseText.indexOf("<!--ShowStock:-->");
				if(nStockPOS>-1) {
				    if(sResponseText.indexOf("Sold")>-1) {
				        document.getElementById('qty').disabled = true;
				        document.getElementById('showBasketButton').style.display = 'none';
				    } else {
				        document.getElementById('qty').disabled = false;
				        document.getElementById('showBasketButton').style.display = '';
					   updateQuantity();
                    }
				}
				
				nDiscountPOS = sResponseText.indexOf("<!--ShowDiscount:-->");
				if(nDiscountPOS>-1) {
					var Sub_Total = parseFloat(document.getElementById('getSubTotal').innerHTML);
					var sDiscount = document.getElementById('Calculated_Discount_Code').value;
					
					document.getElementById('showDiscount').innerHTML = roundNumber(sDiscount, 2);
					document.getElementById('showTotal').innerHTML = roundNumber(Sub_Total - parseFloat(sDiscount), 2);
				}
				
				nDiscardDiscountPOS = sResponseText.indexOf("<!--DiscardDiscount:-->");
				if(nDiscardDiscountPOS>-1) {
					var Sub_Total = parseFloat(document.getElementById('getSubTotal').innerHTML);
					var sDiscount = 0;
					
					document.getElementById('showDiscount').innerHTML = roundNumber(sDiscount, 2);
					document.getElementById('showTotal').innerHTML = roundNumber(Sub_Total - parseFloat(sDiscount), 2);
				}
			}
		}
	}
}

//Ajax Page Request End Here

//Ajax Text box Request Start Here

function SendTextAjaxRequest(sRequestFile, sParams, sTextBox) {
	var sURL = sRequestFile
	sParams  = sParams + "&ref="+Math.floor(Math.random()*10001)
	sURL = sURL + "?" + sParams;
	populateTextBox(sURL, sTextBox);
}

var gsTextBoxID = "";
function populateTextBox(sURL, sTextBoxID)
{
	gsTextBoxID = sTextBoxID;
	xmlHTTP=GetXmlHttpObject();
	if (xmlHTTP==null){
	  alert ("Your browser does not support XMLHTTP!");
	  return;
	}
	
	nPOS = sURL.indexOf("?");
	if(nPOS>-1){
		sParams = sURL.substring(nPOS+1);
		sURL = sURL.substring(0,nPOS);
	}

	xmlHTTP.open("POST",sURL,true);
	xmlHTTP.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHTTP.setRequestHeader("Content-length", sParams.length);
	xmlHTTP.setRequestHeader("Connection", "close");
	xmlHTTP.onreadystatechange=updateTextAjaxRequest;
	xmlHTTP.send(sParams);
}

function updateTextAjaxRequest() {
	if (xmlHTTP.readyState==4) {
		var e = document.getElementById(gsTextBoxID);
		if (e) {
			var sResponseText = xmlHTTP.responseText;
			e.value = sResponseText;
		}
	}
}

//Ajax Text box Request End Here

function sCheckAll(bChecked, sCheckboxName, sTotalCounter) {
	var sTotalCounter = document.getElementById(sTotalCounter).value;
	var sTotalCheckboxLength = document.getElementsByName(sCheckboxName).length;
	
	if(bChecked) {
		for(var i = 1;i<=sTotalCheckboxLength;i++) {
			document.getElementById(sCheckboxName+'_'+i).checked = true;
		}
	} else {
		for(var i = 1;i<=sTotalCheckboxLength;i++) {
			document.getElementById(sCheckboxName+'_'+i).checked = false;
		}		
	}
}

function roundNumber(number,decimal_points) {
	if(!decimal_points) return Math.round(number);
	if(number == 0) {
		var decimals = "";
		for(var i=0;i<decimal_points;i++) decimals += "0";
		return "0."+decimals;
	}

	var exponent = Math.pow(10,decimal_points);
	var num = Math.round((number * exponent)).toString();
	return num.slice(0,-1*decimal_points) + "." + num.slice(-1*decimal_points)
}

function addRow(sTotal_Photos, sMain_Div, sChild_Div) {
	var sTotal = sTotal_Photos;
	var sIncreement = parseInt(sTotal) + 1;
	sTotal = parseInt(sTotal) + 1;
	if(sMain_Div=='Property_Photos') {
		document.getElementById('Total_Photos').value = sIncreement;
		var sContent = '';
		sContent = sContent + "<div id='Property_Photos_"+ sIncreement + "' style='padding: 5px; line-height: 25px; border: 1px solid #EFEFEF; height: 102px;'>";
		sContent = sContent + "Upload Image : <br/>";
		sContent = sContent + "<input class='ftdropdown' size='50' type='file' name='property_photo_"+ sIncreement +"' id='property_photo_" + sIncreement + "' onchange='readURL(this, "+sIncreement+");' /><br/>";
		sContent = sContent + "Image Caption : <br/>";
		sContent = sContent + "<input class='ftdropdown' style='width: 388px;' type='text' name='Image_Caption_"+sIncreement+"' id='Image_Caption_"+sIncreement+"' />";
		sContent = sContent + "<div id='Photo_Preview_"+sIncreement+"' style='position: relative; top: -100px; left: 410px; width: 102px; height: 99px; border: 1px dotted #CCCCCC;'><img id='Photo_"+sIncreement+"' src='imgs/preview.jpg' hspace='2' vspace='2' width='98' height='95' /></div>";
		$("#"+sMain_Div).append(sContent);
	}
}

function removeRow(id) {
	$(id).remove();
}

function getFormElements(objForm)
{
	var sAjaxParams1 = getElementsVals(objForm,"input");
	var sAjaxParams2 = getElementsVals(objForm,"select");
	var sAjaxParams3 = getElementsVals(objForm,"textarea");
	var retParams = sAjaxParams1 + sAjaxParams2 + sAjaxParams3;
	retParams = replaceAll(retParams,"&&","&"); 
	if(retParams.indexOf("&")==0){
		retParams = retParams.substring(1);
	}
	if(retParams.indexOf("&")==retParams.length){
		retParams = retParams.substring(0,retParams.length-1);
	}
	return retParams;
}

function getElementsVals(objForm,sTagNames)
{
	var sAjaxParams = ""
	var arrElements = objForm.getElementsByTagName(sTagNames);
	for(n=0;n<arrElements.length;n++){
		if(sTagNames=="select"){
			for(i=0;i<arrElements[n].length;i++){
				if(arrElements[n].options[i].selected){
					sAjaxParams = sAjaxParams + "&" + arrElements[n].name + "=" + escape(arrElements[n].options[i].value);	
				}
			}
		}
		else if(arrElements[n].type=="checkbox"){
			if(arrElements[n].checked){
				sAjaxParams = sAjaxParams + "&" + arrElements[n].name + "=" + escape(arrElements[n].value);
			}
		}
		else if(arrElements[n].type=="radio"){
			if(arrElements[n].checked){
				sAjaxParams = sAjaxParams + "&" + arrElements[n].name + "=" + escape(arrElements[n].value);
			}		
		}
		else{
			sAjaxParams = sAjaxParams + "&" + arrElements[n].name + "=" + escape(arrElements[n].value);
		}
	}
	return sAjaxParams;
}

function RefreshImage(valImageId) {
	var objImage = document.images[valImageId];
	if (objImage == undefined) {
		return;
	}
	var now = new Date();
	objImage.src = objImage.src.split('?')[0] + '?x=' + now.toUTCString();
}

function resize(im, sCustomHeight)
{
	im.height=sCustomHeight;
}
/* Start Customized Functions */

function resetSize() {
	document.getElementById('SelectedSize').innerHTML = '<strong>NA</strong> - (Size)<input type="hidden" name="Size_ID" id="Size_ID" value="" />';
}

function updateQuantity() {
	var Size_Stock = document.getElementById('Size_Stock').value;
	var e = document.getElementById('qty');
	
	e.length = 0;
	if(Size_Stock >= 10) {
		for(var i=1;i<=10;i++) {
			try {
				e.add(new Option(i, i), null);
			} catch(ex) {
				e.add(new Option(i, i));			
			}
		}
	} else {
		for(var i=1;i<=Size_Stock;i++) {
			try {
				e.add(new Option(i, i), null);
			} catch(ex) {
				e.add(new Option(i, i));			
			}
		}
	}
}
/* End Customized Functions */

