var JS=new Array(),nm,eid,ph=420,_un = 'undefined', Msg= {}, userLogged = false;
Msg.commonErr = 'A problem occurred while processing this request, Please try again later.',
Msg.altHead = 'Thank you for using BIGMaps.\nPlease:\n\n';
var IE = (navigator.appName == "Microsoft Internet Explorer")?true:false;
if( self != top ) { top.location.replace(self.location.href); }

if(typeof document == _un || (!document.addEventListener && !document.attachEvent) || !document.getElementsByTagName || !document.getElementById) alert('Browser not supported'); 

function onSub(){
	
	if(!userLogged) {
		alert('Please sign in before generating the Map API key.'); 
		return false;
	}
	
	var y = document.getElementById('agreeTerms').checked;
	if(y) {
		document.getElementById('agreeTerms').value=1; 
		return true;
	}
	else {
		document.getElementById('agreeTerms').value=0;
		alert('To get a BIGMaps API key, you must agree to the API terms by checking the checkbox.'); 
		return false;
	}
}

function cref(){
	var dd = new Date();
	document.getElementById('img_cap').src = "apicapcha/captcha.php?_"+dd.getTime();
}

function checkuser() {
	var c = getCookie("bigm"),e,f;
	if(c!=0 && c!=null && c!='null')
	{
		f = c.split(";");
		e = f[5].split('"');
		nm = e[1].replace(/\+/g,' ');
		
		e = f[9].split('"');
		eid = e[1];    
		
		el('sg').innerHTML='<b>Welcome&nbsp;<span class="dc">'+nm+'</span>&nbsp;!</b>';
		el('su').innerHTML='<a href="javascript:logOut();"><b>Sign Out</b></a>';
		userLogged = true;
	}
	else {
		el('sg').innerHTML='<a href="javascript:aj(\'signin\');"><b>Sign in</b></a>';
		el('su').innerHTML='<a href="javascript:aj(\'signup\');"><b>Sign up</b></a>';
		eid = nm = '';	
		userLogged = false;
	}
}

function logOut(){
	if (getCookie("bigm")) document.cookie = "bigm= 0; expires=Thu, 01-Jan-70 00:00:01 GMT; path=/";
	if (getCookie(sskey))  document.cookie = sskey+"= 0; expires=Thu, 01-Jan-70 00:00:01 GMT; path=/; domain=.bigmaps.com";
	checkuser();
}

function cl(){
	es("si").display="none";
	es("k").width="0";
	es("k").height="0";
	es("k").display="none";
	el("si_info").innerHTML="";
}

function aj(f,d){
	es("si").display="block";
	es("k").display='block';
	es("k").width="100%";
	es("k").height="100%";

	if(JS[f]) ajcb(f);
	else {
		el("si_info").innerHTML = '<div style="width: 240px; background-color: transparent; margin:0 auto;">'
										+'<table width="100%">'
											+'<tr>'
												+'<td valign="middle" width="55">'
													+'<img src="http://s4.bigmaps.com/images/initLoading.gif" style="width: 54px; height: 55px; visibility: visible;border:0" onload="this.style.visibility=\'visible\'">'
												+'</td>'
												+'<td valign="middle">'
													+'<div class="IText">&nbsp;Loading...</div>'
												+'</td>'
											+'</tr>'
										+'</table>'
									+'</div>';
		var h = creatAjaxObj();
		if(!d) d= "";
		var day = new Date();
		h.open('get', "getpopup.php?f="+f+"&_"+day.getTime());
		h.onreadystatechange = function() {
				if(h.readyState==4){
					JS[f]=h.responseText;
					setTimeout(function(){ajcb(f);},100);
				}
			};	
		h.send(d);
	}
}
function ajcb(f){
	el("si_info").innerHTML=JS[f];
	if(f=="signup" && typeof setYr == 'function' && el('year')) setTimeout(function(){if(el('year').options.length<=1)setYr();},200);
	else if(f=="signin")  {
		var u = getCookie("bigmrememberme");
		if(u!=0 && u!=null && u!='null') el('userid').value = u;
	}
	if(el("popheight")) es("popheight").height = ph+"px";	
}

function varifyJson(res){	
	try{
		return (typeof JSON != _un)?JSON.parse(res):eval('('+res+')');
	}
	catch(e){
		alert(Msg.commonErr);
		return false;
	}						
}

function onEnter(e)
{
	if(IE) return;
    e = (e)?e:((event)?event:null);
	e.cancelBubble = true;
    if(e) var charCode=(e.charCode)?e.charCode:e.keyCode;
	if(charCode==13) logIn(e);
}

// Sign In Validation Starts here
function logIn(e)
{
	var error='';
	var uid      	= trim(el('userid').value);
	var pwd 	    = trim(el('password').value);
	var remlogin 	= (el('remlogin').checked)? 1:0;
	
	if(!uid) error ='- Enter Username.\n';
	if(!pwd) error +='- Enter Password.\n';
	
	if(error!=''){
		alert(Msg.altHead+error);
		return false;
	}else{
		e.disabled=true;
		es('errmsg').display = 'block';
		var h = creatAjaxObj();
		var d = "act=signin&userid="+enc(uid)+"&pwd="+enc(pwd)+"&remlogin="+remlogin;
		h.open('POST', 'comp/signin.php');
		h.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		h.onreadystatechange = function() {
				if(h.readyState==4){
					es('errmsg').display = 'none';
					var res;
			   		if(!(res = varifyJson(h.responseText))) return;		   							
					var err = res.error;
					var msg = res.suggest;
					if(err==0) {
						cl();
						checkuser();
						el('errmsg2').innerHTML = '';
					}
					else {
						e.disabled=false;
						alert(msg);
					}	 
				}
			};	
		h.send(d);
	}
}
function checkUserAvail()
{
	var error='';
	var uPatt  =  new RegExp(/[^a-zA-Z0-9\@\_\.]+/g);
	var uid    = trim(el('userid').value);
	
	if(!uid)						error ='- Enter username.\n';
	else if(uid && uid.length<6) 	error +='- Username should contain atleast 6 characters.\n';
	else if(uPatt.test(uid)) 		error +='- Username should not contain spaces & special characters.\n';
	
	if(error!=''){
		alert(Msg.altHead+error);
		return;
	}else{
		es('errmsg').display = 'block';
		var h = creatAjaxObj();
		var d = "act=checkuser&userid="+enc(uid);
		h.open('post', 'comp/signup.php');
		h.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		h.onreadystatechange = function() {
				if(h.readyState==4){
					es('errmsg').display = 'none';
					var res;
			   		if(!(res = varifyJson(h.responseText))) return;	
					var err = res.error;
					var msg = res.suggest;
					alert(msg);
				}
			};	
		h.send(d);
	}
}
// Sign In Validation ends here
// Forgot Password Validation Starts here
function fp()
{
	es("SignInMain").display="none";
	es("fgtpwd").display="block";
}	
function forgotPass(e)
{
	var error  = '';
	var femail = trim(el('femail').value);
	
	if(!femail)  		 	  error +='- Enter Email.\n';
	else if(!isEmail(femail)) error +='- Enter Valid Email Id.\n';
	
	if(error){
		alert(Msg.altHead+error);
		return false;
	}else{
		e.disabled=true;
		es('errmsg1').display = 'block';
		var h = creatAjaxObj();
		var d = "act=forgot&email="+enc(femail);
		h.open('post', 'comp/signin.php');
		h.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		h.onreadystatechange = function() {
				if(h.readyState==4){
					es('errmsg1').display = 'none';
					var res;
			   		if(!(res = varifyJson(h.responseText))) return;	
					var err = res.error;
					var msg = res.suggest;
					e.disabled=false;
					if(err==0) cl();
					alert(msg); 
				}
			};	
		h.send(d);
	}
}

// Forgot Password Validation ends here
function sCitycg()
{
	setTimeout(function(){
		if(el('cres').options[el('cres').selectedIndex].text=='Others') es('othercity').visibility='visible';
		else es('othercity').visibility='hidden';	
	},100);
	
}
// Sign Up Validation Starts here
function signUp(e)
{
	var error='';

	var uid  	= trim(el('userid').value);
	var pwd 	= trim(el('pwd').value);
	var pwd2 	= trim(el('pwd2').value);
	var name	= trim(el('name').value);
	var email 	= trim(el('email').value);
	var mobile 	= trim(el('mobile').value) ? parseInt(trim(el('mobile').value),10):'';
	var cres 	= trim(el('cres').value);
	var ocity 	= trim(el('signup_ocity').value);	
	var month 	= trim(el('month').value);
	var day 	= trim(el('day').value);
	var year 	= trim(el('year').value);
	var addr 	= trim(el('addr').value);
	var pin 	= trim(el('pin').value) ? parseInt(trim(el('pin').value),10):'';
	var sex 	= (el('sexM').checked)? 0:1;

	newsLetterFlag 		= (el('newsletter').checked)? 1:0;
	var check_personal 	= (el('check_personal').checked)? 1:0;
	var check_accept 	= (el('check_accept').checked)? 1:0;
	
	var Patt1 = new RegExp(/[^a-zA-Z ]+/g);
	var Patt2 = new RegExp(/[^a-zA-Z0-9\@\_\.]+/g);
	
	if(!uid)									error = '- Enter username.\n';
	else if(uid && Patt2.test(uid)) 			error +='- Username should not contain spaces & special characters.\n';
	else if(uid && uid.length<6)				error +='- Username should be at least 6 characters long.\n';
	if(!pwd) 									error +='- Enter Password.\n';
	else if(pwd && pwd.length<6)				error +='- Password should be at least 6 characters long.\n';
	if(!pwd2) 									error +='- Re-enter Password.\n';
	if(pwd!=pwd2) 								error +='- Passwords typed do not match. Please re-enter the passwords.\n';
	if(!name)									error +='- Enter name.\n';
	else if(Patt1.test(name))					error +='- Name should not contain numbers & special characters.\n';
	if(!email) 									error +='- Enter Email Id.\n';
	else if(!isEmail(email) || email.indexOf('"')!= -1) 	error +='- Enter Valid Email Id.\n';
	if(mobile && mobile<=8000000000) 			error +='- Enter a valid 10 digit mobile number.\n';
    if(!cres && !ocity)							error +='- Select a city.\n';  
	else if(cres==99999 && !ocity)				error +='- Enter city name.\n';
	else if(ocity && Patt1.test(ocity)) 		error +='- City name should not contain numbers & special characters.\n';  
	if(!month || !day || !year) 				error +='- Enter your correct date of birth.\n';
	if(addr && addr.indexOf('"') != -1 || addr.indexOf('<') != -1 || addr.indexOf('\'') != -1) 
												error +='- Address should not contain special characters.\n';
	if(pin && pin<=100000) 						error +='- Enter a 6 digit valid pin code .\n';
	if(check_accept=="") 						error +='- Accept the Terms & Conditions.\n';
	
	if(error){
		alert(Msg.altHead+error);
		return false;
	}else{
		e.disabled=true;
		var signupTimer = setTimeout(function(){
							h.abort();
							cl();
							alert(Msg.commonErr);
		},60000);
		es('errmsg').display = 'block';
		var h = creatAjaxObj();
		var d = "act=adduser&userid="+enc(uid)+"&pwd="+enc(pwd)+"&pwd2="+enc(pwd2)+"&name="+enc(name)+"&email="+enc(email)+"&mobile="+mobile+"&city="+cres+"&ocity="+ocity+"&sex="+sex+"&month="+month+"&date="+day+"&year="+year+"&addr="+enc(addr)+"&newsletter="+newsLetterFlag+"&hide="+check_personal+"&check_accept="+check_accept+"&pin="+pin;
		h.open('post', 'comp/signup.php');
		h.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		h.onreadystatechange = function() {
				if(h.readyState==4){
					es('errmsg').display = 'none';
					clearTimeout(signupTimer);
					var res;
			   		if(!(res = varifyJson(h.responseText))) return;	
					var err = parseInt(res.error);
					var msg = res.suggest;
					if(err==0) {
						cl();
						checkuser();
					}else {
						e.disabled=false;
						alert(msg);
					}	
				}
			};	
		h.send(d);
	}
}

function setYr()
{
		var d = new Date();var element;
		var yr = d.getFullYear();
		for(var i=1;i<=31;i++) 
		{
			element = document.createElement("option");
			element.value=i;
			if (IE) element.innerText=i;
			else element.text=i;
			el("day").appendChild(element);
		}
        for(var i=yr;i>=yr-100;i--) 
		{
			element = document.createElement("option");
			element.value=i;
			if (IE) element.innerText=i;
			else element.text=i;
			el("year").appendChild(element);
		}
}
function persCheck(x){
	var obj = (x)?el('user_personal'):el('check_personal');
	if(obj.checked)
	 alert('Selecting this option will hide your email id, mobile number, age, gender and address from other users of BIGMaps.');
	else alert('Your email id, mobile number, age, gender and address will be visible to other users of BIGMaps.'); 
}
function el(id){return document.getElementById(id);}
function es(id){return el(id).style;}
function ev(id){return el(id).value;}
function enc(s){return encodeURIComponent(s);}
function dec(s){return decodeURIComponent(s);}
function creatAjaxObj(){if (IE) return new ActiveXObject("Microsoft.XMLHTTP");else return new XMLHttpRequest();}
function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}
function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
function isEmail(str){
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	if (filter.test(str)) return true;
	return false;
}
function getCookie(n){
	var dco = document.cookie;
	if (dco.length > 0)
	{ 
		var b = dco.indexOf(n+"=");
		if (b != -1)
		{ 
			b += n.length+1;
			var e = dco.indexOf(";",b);
			if (e == -1) e = dco.length;
			var v = dco.substring(b,e);
			if(v) return unescape(v);
			else return null; 
		}
	}
	return null;
}
if(el('year') && el('year').options.length<=1) setYr();