var errorFields = new Array();

//var isNN = (navigator.appName.indexOf("Netscape") != -1);

function urlEncode(string){
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if(c == 43)			// +
            	utftext += "%2b";
            else if(c == 47)	// /
            	utftext += "%2f";
            else if(c == 37)	// %
            	utftext += "%25";
            else if(c == 63)	// ?
            	utftext += "%3f";
            else if(c == 38)	// &
            	utftext += "%26";
            else if(c == 35)	// #
            	utftext += "%23";
            else if(c == 32)	// (space)
            	utftext += "+";
            else if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }
//			alert(c + " " + utftext);
        }

        return utftext;
}

function autoTab(input,len, e) {
  var keyCode = (e.which) ? e.which : e.keyCode; 
//  alert(keyCode);
  if(input.value.length >= len && keyCode >= 48 && keyCode <= 90) {
    input.value = input.value.slice(0, len);
    input.form[(getIndex(input)+1) % input.form.length].focus();
    input.form[(getIndex(input)+1) % input.form.length].select();
  }
  return true;
}

  function containsElement(arr, ele) {
    var found = false, index = 0;
    while(!found && index < arr.length)
    if(arr[index] == ele)
	    found = true;
    else
    	index++;
    return found;
  }

  function getIndex(input) {
    var index = -1, i = 0, found = false;
    while (i < input.form.length && index == -1)
	    if (input.form[i] == input)
			index = i;
    	else
			i++;
    return index;
  }


function updateField(name, name2){
	if(name2 && name2 != "")
		var value = document.getElementById(name2).value;
	else
		var value = document.getElementById(name).value;

	value = urlEncode(value);
		
	var parm = "?action=ajax&" + name + "=" + value
	window.status = "Ajax: " + thisphp+parm;

	var elem = document.getElementById("errorMsgBox");
	if(elem)
		elem.style.display = "none";
	var numErrors = errorFields.length;
	for(var a = 0;a < numErrors;a++){
		document.getElementById(errorFields[a]).className = null;
//		if(errorFields[a] != name)
//			parm += "&" + errorFields[a] + "=" + document.getElementById(errorFields[a]).value; 
	}
	for(a = 0;a < numErrors;a++)
		errorFields.pop();

	switch(name){
		case "designer1_phone": case "designer2_phone": case "designer3_phone": case "designer4_phone":
			document.getElementById("designer1_phone").className = null;
			document.getElementById("designer2_phone").className = null;
			document.getElementById("designer3_phone").className = null;
			document.getElementById("designer4_phone").className = null;
			document.getElementById("designer4_phone_msg").innerHTML = "";
			break; 
		case "designer1_email": case "designer2_email":
			document.getElementById("designer1_email").className = null;
			document.getElementById("designer2_email").className = null;
			document.getElementById("designer2_email_msg").innerHTML = "";
			break;
		case "designer1_password": case "designer2_password":
			document.getElementById("designer1_password").className = null;
			document.getElementById("designer2_password").className = null;
			document.getElementById("designer2_password_msg").innerHTML = "";
			break;
		case "dealer1_phone": case "dealer2_phone": case "dealer3_phone": case "dealer4_phone":
			document.getElementById("dealer1_phone").className = null;
			document.getElementById("dealer2_phone").className = null;
			document.getElementById("dealer3_phone").className = null;
			document.getElementById("dealer4_phone").className = null;
			document.getElementById("dealer4_phone_msg").innerHTML = "";
			break; 
		case "dealer_payment1_day_phone": case "dealer_payment2_day_phone": case "dealer_payment3_day_phone": case "dealer_payment4_day_phone":
			document.getElementById("dealer_payment1_day_phone").className = null;
			document.getElementById("dealer_payment2_day_phone").className = null;
			document.getElementById("dealer_payment3_day_phone").className = null;
			document.getElementById("dealer_payment4_day_phone").className = null;
			document.getElementById("dealer_payment4_day_phone_msg").innerHTML = "";
			break; 
		case "dealer_payment1_evening_phone": case "dealer_payment2_evening_phone": case "dealer_payment3_evening_phone": case "dealer_payment4_evening_phone":
 			document.getElementById("dealer_payment1_evening_phone").className = null;
			document.getElementById("dealer_payment2_evening_phone").className = null;
			document.getElementById("dealer_payment3_evening_phone").className = null;
			document.getElementById("dealer_payment4_evening_phone").className = null;
			document.getElementById("dealer_payment4_evening_phone_msg").innerHTML = "";
			break; 
		case "dealer1_email": case "dealer2_email":
			document.getElementById("dealer1_email").className = null;
			document.getElementById("dealer2_email").className = null;
			document.getElementById("dealer2_email_msg").innerHTML = "";
			break;
		case "dealer1_password": case "dealer2_password":
			document.getElementById("dealer1_password").className = null;
			document.getElementById("dealer2_password").className = null;
			document.getElementById("dealer2_password_msg").innerHTML = "";
			break;
	}
	scrollTop = 0;
	if(window.pageYOffset && window.pageYOffset != 0)
		scrollTop = window.pageYOffset;
	else if(document.body.scrollTop != 0)
		scrollTop = document.body.scrollTop;
	else if(document.documentElement.scrollTop != 0)
		scrollTop = document.documentElement.scrollTop
// 	else
// 		scrollTop = elem.scrollTop;
	ajaxMessagePopupElem.style.position = "absolute";
	ajaxMessagePopupElem.style.top = scrollTop + "px";
	ajaxMessagePopupElem.style.right = "0px";
	ajax("Saving changes", "GET", thisphp+parm, null, updateDoneOK, updateDoneERR); 
}

function updateDoneERR(){
	//alert("Update failed");
	return false;
}

function updateDoneOK(){
	switch(thisphp){
		case "designer.php":
			switch(ajaxData.responseText){
				case "Invalid phone number":
					document.getElementById("designer1_phone").className = "err";
					document.getElementById("designer2_phone").className = "err";
					document.getElementById("designer3_phone").className = "err";
					document.getElementById("designer4_phone").className = "err";
					document.getElementById("designer4_phone_msg").innerHTML = ajaxData.responseText;
					break;
				case "Emails do not match": case "Invalid email address": case "Email address is taken":
					document.getElementById("designer1_email").className = "err";
					document.getElementById("designer2_email").className = "err";
					document.getElementById("designer2_email_msg").innerHTML = ajaxData.responseText;
					break;
				case "Passwords do not match": case "Password too short": 
					document.getElementById("designer1_password").className = "err";
					document.getElementById("designer2_password").className = "err";
					document.getElementById("designer2_password_msg").innerHTML = ajaxData.responseText;
					break;
				case "OK":
					break;
				case "":
					break;
				default:
					alert(ajaxData.responseText);
			}
			break;
		case "dealer.php":
			switch(ajaxData.responseText){
				case "Invalid phone number":
					document.getElementById("dealer1_phone").className = "err";
					document.getElementById("dealer2_phone").className = "err";
					document.getElementById("dealer3_phone").className = "err";
					document.getElementById("dealer4_phone").className = "err";
					document.getElementById("dealer4_phone_msg").innerHTML = ajaxData.responseText;
					break;
				case "Emails do not match": case "Invalid email address": case "Email address is taken":
					document.getElementById("dealer1_email").className = "err";
					document.getElementById("dealer2_email").className = "err";
					document.getElementById("dealer2_email_msg").innerHTML = ajaxData.responseText;
					break;
				case "Passwords do not match": case "Password too short":
					document.getElementById("dealer1_password").className = "err";
					document.getElementById("dealer2_password").className = "err";
					document.getElementById("dealer2_password_msg").innerHTML = ajaxData.responseText;
					break;
				case "OK":
					break;
				case "":
					break;
				default:
					alert(ajaxData.responseText);
			}
			break;
		case "dealerpayment.php":
			switch(ajaxData.responseText){
				case "Invalid day phone number":
					document.getElementById("dealer_payment1_day_phone").className = "err";
					document.getElementById("dealer_payment2_day_phone").className = "err";
					document.getElementById("dealer_payment3_day_phone").className = "err";
					document.getElementById("dealer_payment4_day_phone").className = "err";
					document.getElementById("dealer_payment4_day_phone_msg").innerHTML = ajaxData.responseText;
					break;
				case "Invalid evening phone number":
					document.getElementById("dealer_payment1_evening_phone").className = "err";
					document.getElementById("dealer_payment2_evening_phone").className = "err";
					document.getElementById("dealer_payment3_evening_phone").className = "err";
					document.getElementById("dealer_payment4_evening_phone").className = "err";
					document.getElementById("dealer_payment4_evening_phone_msg").innerHTML = ajaxData.responseText;
					break;
				case "OK":
					break;
				case "":
					break;
				default:
					alert(ajaxData.responseText);
			}
			break;
		case "changeProfile.php":
			switch(ajaxData.responseText){
				case "OK":
					break;
				case "":
					break;
				default:
					lines = ajaxData.responseText.split("\n");
					message = "Errors <ul>";
					for(a = 0;a < lines.length;a++){
						if(lines == "")
							continue;
						msg = lines[a].split("|");
						if(msg[0] == "ERR"){
//							alert(msg);
							document.getElementById(msg[1]).className = "err";
							message = message + "<li><label for=" + msg[1] + ">" + msg[2] + "</label></li>\n";
							errorFields.push(msg[1]);
						}
					}
					message = message + "</ul>\n";
					document.getElementById("errorMsgBox").style.display = "block";
					document.getElementById("errorMsgBox").innerHTML = message;
			}
			break;
	}
}

function popUp(URL, w, h) {
	var w = w + 40;
	var h = h + 40;
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width="+w+",height="+h+"');");
}

function GetCookie( name ) {
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while ( i < clen ) {
		var j = i + alen;
		if ( document.cookie.substring(i, j) == arg )
			return getCookieVal(j);
		i = document.cookie.indexOf( " ", i ) + 1;
		if ( i == 0 ) break;
	}
	return null;
}

function DeleteCookie( name, path, domain ) {
	if ( GetCookie( name ) ) {
		document.cookie = name + "=" +
		( ( path ) ? "; path=" + path : "" ) +
		( ( domain ) ? "; domain=" + domain : "" ) +
		"; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}

function SetCookie( name, value, expires, path, domain, secure ) {
	document.cookie = name + "=" + escape (value) +
		( ( expires ) ? "; expires=" + expires.toGMTString() : "" ) +
		( ( path ) ? "; path=" + path : "" ) +
		( ( domain ) ? "; domain=" + domain : "" ) +
		( ( secure ) ? "; secure" : "" );
}

function getCookieVal( offset ) {
	var endstr = document.cookie.indexOf ( ";", offset );
	if ( endstr == -1 )
		endstr = document.cookie.length;
	return unescape( document.cookie.substring( offset, endstr ) );
}

function checkCookies(){
	SetCookie( "foo", "bar" );
	if ( GetCookie( "foo" ) ) {
		DeleteCookie( "foo" );
		return true;
	}
	else {	// Cookies are disabled
		for(a = 0;a < document.forms.length;a++){
			elem = document.forms[a];
			if(elem){
				elem.style.display = "none";
				elem.parentNode.innerHTML += "<p>Please enable cookies and reload this page</p>";
			}
		}
		alert("Please enable cookies and reload this page");
		return false;
	}
}


