// JavaScript Document
function showimage(imagearray, id, imageplace)
{
	for(i=0; i<imagearray.length; i++)
	{
		if (imagearray[i]["imageid"] == id)
		{
			largeimageurl = imagearray[i]["mainimage"];
			imageurl = imagearray[i]["image"];
			width = imagearray[i]["width"];
			height = imagearray[i]["height"];
			
			if (imageurl)
			{
				document.getElementById("maininageofproduct").href = largeimageurl;
				document.getElementById(imageplace).src = imageurl;
				document.getElementById(imageplace).width = width;
				document.getElementById(imageplace).height = height;
			}
			return true;
		}
	}
}

function setnewcartproductimage(imagearray, id, frm)
{
	for(i=0; i<imagearray.length; i++)
	{
		if (imagearray[i]["imageid"] == id)
		{
			imageurl = imagearray[i]["cartimage"];

			if (imageurl)
			{
				for(i = 0; i < document.forms[frm].length; i++)
				{
					if(document.forms[frm].elements[i].name.substr(0, 6) == 'image_')
					{
						document.forms[frm].elements[i].value = imageurl;
					}
				}
			}
			return true;
		}
	}
}

function menutoggle(div1, div2)
{
	document.getElementById(div1).style.display = '';
	document.getElementById(div2).style.display = 'none';
}

/*
function menu(childbox, flipimg, img1, img2)
{
	
	if (document.getElementById(childbox).style.display == 'none') 
	{
		document.getElementById(childbox).style.display = '';
		document.getElementById(flipimg).src = img1;
	}
	else 
	{	
		document.getElementById(childbox).style.display = 'none';
		document.getElementById(flipimg).src = img2;
	}
}
*/

function chkvalidity(frm, validity)
{
	chk = true;
	for(j=0; j<validity.length; j++)
	{
		chk = fieldcheck(frm, validity[j]["field"], validity[j]["datatype"], validity[j]["fieldtype"], validity[j]["msg"], validity[j]["needle"], validity[j]["depend_cmd"], validity[j]["depend_check"])
		if (chk == false) return false;
	}
	return true;
}

function fieldcheck(frm, field, datatype, fieldtype, msg, needle, depend_field, depend_check)
{
	state = true;
	if ((fieldtype == "radio" || fieldtype == "checkbox") && datatype != "depend")
	{
		return chkradiocheckbox(frm, field, msg);
	}
	else
	{
		for(i = 0; i < document.forms[frm].length; i++)
		{
			if(document.forms[frm].elements[i].name == field)
			{
				if (datatype == "char")
				{
					if(trim(document.forms[frm].elements[i].value) == "") state = false;
				}
				else if (datatype == "curr")
				{
					if (parseFloat(document.forms[frm].elements[i].value) < 0) state = false;
					if (checkcurr(document.forms[frm].elements[i].value) == false) state = false;
				}
				else if (datatype == "number")
				{
					if (parseFloat(document.forms[frm].elements[i].value) < 0) state = false;
					if (checknumber(document.forms[frm].elements[i].value) == false) state = false;
				}				
				else if (datatype == "email")
				{
					if (emailCheck(document.forms[frm].elements[i].value) == false) state = false;
				}
				else if (datatype == "nospecial")
				{
					if (nonspecialchar(document.forms[frm].elements[i].value) == false) state = false;
				}
				else if (datatype == "compare")
				{
					if (strcompare(document.forms[frm].elements[i].value, needle) == false) state = false;
				}
				else if (datatype == "either")
				{
					if (streither(document.forms[frm].elements[i].value, needle) == false) state = false;
				}
				else if (datatype == "length")
				{
					if (chkstringlength(document.forms[frm].elements[i].value, needle) == false) state = false;
				}
				else if (datatype == "depend")
				{
					if (radiocheckvalue(frm, document.forms[frm].elements[i].name) != needle) return true;
					if (chkdependency(frm, document.forms[frm].elements[i], needle, depend_field, depend_check) == false) state = false;
				}
				else if(datatype == "image")
				{
					if(checkimage(document.forms[frm].elements[i].value) == false) state = false;
				}
				else if(datatype == "url")
				{
					if(urlCheck(document.forms[frm].elements[i].value) == false) state = false;
				}
				else if(datatype == "greater")
				{
					if(checkgreater(document.forms[frm].elements[i].value,needle) == false) state = false;
				}
				else if(datatype == "less")
				{
					if(checkless(document.forms[frm].elements[i].value,needle) == false) state = false;
				}
				else if(datatype == "video")
				{
					if(validatevideo(document.forms[frm].elements[i].value) == false) state = false;
				}
				else if(datatype == "charlen")
				{
					if(checkcharacter(document.forms[frm].elements[i].value,needle) == false) state = false;
				}
				else if(datatype == "chazero")
				{
					if(document.forms[frm].elements[i].value == '00') state = false;
				}
				
				
				
			}
			if (!state)
			{
				alert(msg);
				if (datatype != "depend") 
				{
					if (document.forms[frm].elements[i].disabled == false) document.forms[frm].elements[i].focus();
				}
				return state;
			}
		}
	}
}
function chkstringlength(string, strlength)
{
	if (string.length < strlength) return false;
}

function streither(str1, str2)
{
	if (trim(str1) == "" && trim(str2) == "") return false;
}

function strcompare(str1, str2)
{
	if (str1 != str2) return false;
}

function mannav(frm, objname, msg, mode)
{
	if (chkradiocheckbox(frm, objname, msg))
	{
		document.forms[frm].cmd_mode.value = mode;
		document.forms[frm].submit();
		return true;
	}
	else
	{
		return false;
	}
}

function radiocheckvalue(frm, objname)
{
	for(i = 0; i < document.forms[frm].length; i++)
	{
		if(document.forms[frm].elements[i].name == objname)
		{
			if(document.forms[frm].elements[i].checked == true)
			{
				return document.forms[frm].elements[i].value;
			}
		}
	}
	return false;
}

function togglecheckbox(frm, master)
{
	for(i = 0; i < document.forms[frm].length; i++)
	{
		if(document.forms[frm].elements[i].name == master)
		{
			if (document.forms[frm].elements[i].checked == true) ckeckit = true;
			else if (document.forms[frm].elements[i].checked == false) ckeckit = false;
		}
	}
	for(i = 0; i < document.forms[frm].length; i++)
	{
		if(document.forms[frm].elements[i].type == 'checkbox')
		{
			if (ckeckit == true) document.forms[frm].elements[i].checked = true;
			else if (ckeckit == false) document.forms[frm].elements[i].checked = false;
		}
	}
}

function selectvalue(frm, objname)
{
	for(i = 0; i < document.forms[frm].length; i++)
	{
		if(document.forms[frm].elements[i].name == objname)
		{
			if(document.forms[frm].elements[i].selected == true)
			{
				return document.forms[frm].elements[i].value;
			}
		}
	}
	return false;
}

function chkradiocheckbox(frm, objname, msg)
{
	for(i = 0; i < document.forms[frm].length; i++)
	{
		if(document.forms[frm].elements[i].name == objname)
		{
			if(document.forms[frm].elements[i].checked == true) return true;
		}
	}
	alert(msg);
	return false;
}

function submitform(frm, action)
{
	if (action)
	{
		document.forms[frm].action = action;
	}
	document.forms[frm].submit();
	return true;
}
function submitformforseprate(frm, action,cmd)
{

	if (action)
	{
		document.forms[frm].action = action;
		document.forms[frm].task.value=cmd;
	}
	
	document.forms[frm].submit();
	return true;
}
function redirect(url)
{
	document.location.href = url;
	return true;
}

function nonspecialchar(varStr)
{
	
	var iChars = "`~!@#$%^&*()-=+\|,./?'\"[] {}";
	for (var i = 0; i < varStr.length; i++) 
	{
		if (iChars.indexOf(varStr.charAt(i)) != -1)
		{
            return false;
        }
	}
	return true;
}

function emailCheck(emailStr, errormessage)
{
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);

	if (matchArray==null) 
	{
		return false;
	}
	
	var user=matchArray[1];
	var domain=matchArray[2];

	for (i=0; i<user.length; i++) 
	{
		if (user.charCodeAt(i)>127) 
		{
			return false;
		}
	}
	for (i=0; i<domain.length; i++) 
	{
		if (domain.charCodeAt(i)>127) 
		{
			return false;
   		}
	}

	if (user.match(userPat)==null) 
	{
		return false;
	}

	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) 
	{
		for (var i=1;i<=4;i++) 
		{
			if (IPArray[i]>255) 
			{
				return false;
   			}
		}
		return true;
	}

	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) 
	{
		if (domArr[i].search(atomPat)==-1) 
		{
			return false;
	   	}
	}

	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) 
	{
		return false;
	}

	if (len<2) 
	{
		return false;
	}

	return true;
}

function popUpscroll(URL, width, height) 
{
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,left=150,top=150,location=0,statusbar=0,menubar=0,resizable=0,width=" + width + ",height=" + height + "');");
}

function popUp(URL, width, height) 
{
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,left=150,top=150,location=0,statusbar=0,menubar=0,resizable=0,width=" + width + ",height=" + height + "');");
}

function checknumber(object)
{
	var x=object;
	var anum=/(^\d+$)|(^\d+\d+$)/;
	if (anum.test(x))
	{
		return true;
	}
	else
	{
		return false;
	}
}
function checkcurr(object)
{
	var x=object;
	var anum=/(^\d+$)|(^\d+\.\d+$)/;
	if (anum.test(x))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function trim (s)
{
	return rtrim(ltrim(s));
}

function ltrim (s)
{
	return s.replace( /^\s*/, "" );
}

function rtrim (s)
{
	return s.replace( /\s*$/, "" );
}
function checkimage(path)
{
	var ph_url = path
	var start_pos = ph_url.lastIndexOf(".")+1;// this function gives the possition of "." in ph_ulr
	var file_ext = ph_url.substring(start_pos);// this function gives the extention of file e.g .jpg , .txt .jpeg 
	if(file_ext.toLowerCase()!="jpg" && file_ext.toLowerCase()!="bmp" && file_ext.toLowerCase()!="gif" && file_ext.toLowerCase()!="jpeg" && file_ext.toLowerCase()!="png")
	{
		  return false;
	} 
}
function urlCheck(emailStr)
{
	
    var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/; 
    if(RegExp.test(emailStr)){ 
        return true; 
    }else{ 
        return false; 
    } 

}
function checkgreater(value,needle)
{
	if(value > needle)
	{
		return false;
	}
}
function checkless(value,needle)
{
	if(value < needle)
	{
		return false;
	}
}
function validatevideo(value)
{
	validformFile = /(.mpg|.mpeg|.wmv|.dat|.3gp|.rm|.avi|.flv|.mov|.ram|.rmvb|.swf)$/;
	if(!validformFile.test(value.toLowerCase()))
		return false;
}
function checkcharacter(value,needle)
{
		if(value.length > needle)
			return false;
}
function isValidDate(dateStr)
{

	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; // requires 4 digit year
	
	var matchArray = dateStr.match(datePat); // is the format ok?
	if (matchArray == null) {
	alert(dateStr + " Date is not in a valid format.")
	return false;
	}
	month = matchArray[1]; // parse date into variables
	day = matchArray[3];
	year = matchArray[4];
	if (month < 1 || month > 12) { // check month range
	alert("Month must be between 1 and 12.");
	return false;
	}
	if (day < 1 || day > 31) {
	alert("Day must be between 1 and 31.");
	return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
	alert("Month "+month+" doesn't have 31 days!")
	return false;
	}
	if (month == 2) { // check for february 29th
	var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
	if (day>29 || (day==29 && !isleap)) {
	alert("February " + year + " doesn't have " + day + " days!");
	return false;
	   }
	}
return true;
}


function isValidTime(timeStr) {
// Time validation function courtesty of 
// Sandeep V. Tamhankar (stamhankar@hotmail.com) -->

// Checks if time is in HH:MM:SS AM/PM format.
// The seconds and AM/PM are optional.

var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;

var matchArray = timeStr.match(timePat);
if (matchArray == null) {
alert("Time is not in a valid format.");
return false;
}
hour = matchArray[1];
minute = matchArray[2];
second = matchArray[4];
ampm = matchArray[6];

if (second=="") { second = null; }
if (ampm=="") { ampm = null }

if (hour < 0  || hour > 23) {
alert("Hour must be between 1 and 12. (or 0 and 23 for military time)");
return false;
}
if (hour <= 12 && ampm == null) {
if (confirm("Please indicate which time format you are using.  OK = Standard Time, CANCEL = Military Time")) {
alert("You must specify AM or PM.");
return false;
   }
}
if  (hour > 12 && ampm != null) {
alert("You can't specify AM or PM for military time.");
return false;
}
if (minute < 0 || minute > 59) {
alert ("Minute must be between 0 and 59.");
return false;
}
if (second != null && (second < 0 || second > 59)) {
alert ("Second must be between 0 and 59.");
return false;
}
return true;
}


function dateDiff(dateform) {
date1 = new Date();
date2 = new Date();
diff  = new Date();

if (isValidDate(dateform.firstdate.value) && isValidTime(dateform.firsttime.value)) { // Validates first date 
date1temp = new Date(dateform.firstdate.value + " " + dateform.firsttime.value);
date1.setTime(date1temp.getTime());
}
else return false; // otherwise exits

if (isValidDate(dateform.seconddate.value) && isValidTime(dateform.secondtime.value)) { // Validates second date 
date2temp = new Date(dateform.seconddate.value + " " + dateform.secondtime.value);
date2.setTime(date2temp.getTime());
}
else return false; // otherwise exits

// sets difference date to difference of first date and second date

diff.setTime(Math.abs(date1.getTime() - date2.getTime()));

timediff = diff.getTime();

weeks = Math.floor(timediff / (1000 * 60 * 60 * 24 * 7));
timediff -= weeks * (1000 * 60 * 60 * 24 * 7);

days = Math.floor(timediff / (1000 * 60 * 60 * 24)); 
timediff -= days * (1000 * 60 * 60 * 24);

hours = Math.floor(timediff / (1000 * 60 * 60)); 
timediff -= hours * (1000 * 60 * 60);

mins = Math.floor(timediff / (1000 * 60)); 
timediff -= mins * (1000 * 60);

secs = Math.floor(timediff / 1000); 
timediff -= secs * 1000;

dateform.difference.value = weeks + " weeks, " + days + " days, " + hours + " hours, " + mins + " minutes, and " + secs + " seconds";

return false; // form should never submit, returns false
}