
/* PHONE SWITCHER */

if(typeof phoneSwitcher=="undefined" || !phoneSwitcher){var phoneSwitcher={};}

// phone number holder variable
phoneSwitcher.phoneNumber="";

//check if script is on live or dev site
phoneSwitcher.isOnDev=(window.location.href.search(/vkistudios.net/)>-1);

//saves a phone number on XHR call response
phoneSwitcher.setPhone = function(req){
	delete_cookie('phoneNum');
	//set cookie for 2 days + trim whitespace
	//createCookie('phoneNum',trimStr(req.responseText),2);
	if(phoneSwitcher.isOnDev){set_cookie('phoneNum',trimStr(req.responseText),2,'/','vkistudios.net',false);}
	else{set_cookie('phoneNum',trimStr(req.responseText),2,'/','vkistudios.com',false);}
	
	//use phone number to update the page
	phoneSwitcher.replacePhoneNumbers();
}

//replaces phone numbers on the page with the phone number retrieved
phoneSwitcher.replacePhoneNumbers = function(){
	var phoneNum = get_cookie('phoneNum');
	
	// check that the length is greater than 1, which it would be if the value was '0'
	if(phoneNum.length>1){
		// get header phone number html element object
		var headerPhone = document.getElementById('head_phone');
		// do replacement in the header
		if(!(typeof headerPhone=="undefined" || !headerPhone)){
			headerPhone.innerHTML=(phoneNum).replace(/-/g,".");
		}
		
		// check if the current page is the contact page
		var isContactPage=window.location.href.search(/vkistudios.(com|net)\/contact.cfm/);
		// do replacement on contact page
		if(isContactPage > -1){
			var contactPagePhone = document.getElementById('contactpage_phone');
			if(!(typeof contactPagePhone=="undefined" || !contactPagePhone)){
				contactPagePhone.innerHTML=phoneNum;
			}
		}
	}
}

// try getting all variations of url.pid
phoneSwitcher.getURLPID=function(){
	if(getURLParam('pid')!=null){
		return getURLParam('pid');
	}
	else if(getURLParam('PID')!=null){
		return getURLParam('PID');
	}
	else if(getURLParam('PId')!=null){
		return getURLParam('PId');
	}
	else if(getURLParam('PiD')!=null){
		return getURLParam('PiD');
	}
	else if(getURLParam('pID')!=null){
		return getURLParam('pID');
	}
	else if(getURLParam('Pid')!=null){
		return getURLParam('Pid');
	}
	else if(getURLParam('pId')!=null){
		return getURLParam('pId');
	}
	else if(getURLParam('piD')!=null){
		return getURLParam('piD');
	}
	else{return null;}
}

//calls webservice
phoneSwitcher.callWebService = function(pid){
	var dateTimeNow = new Date();
	var tempURL='/external/cfc/pub_phone_serv.cfc?method=getPhoneNumber&phone_campid='+pid+'&datetime='+dateTimeNow.toGMTString();

	//call webservice and save the returned phone number anyway incase it's changed
	sendRequest(tempURL,phoneSwitcher.setPhone);
}

// phoneSwitcher initializer
phoneSwitcher.init = function(){
	//check for url.pid
	var urlPID=phoneSwitcher.getURLPID();
	
	//get cookie.pid if it exists
	var cookiePID=get_cookie('pid');
	
	//get cookie.phoneNum if it exists
	var cookiePHONE=get_cookie('phoneNum');
	
	//compare url val against cookie if defined
	if(phoneSwitcher.pidDefinedAndValid(urlPID)){
		// set cookie for 2 days
		delete_cookie('pid');
		if(phoneSwitcher.isOnDev){
			set_cookie('pid',trimStr(urlPID),2,'/','vkistudios.net',false);
		}
		else{
			set_cookie('pid',trimStr(urlPID),2,'/','vkistudios.com',false);
		}
		//get cookie value back
		cookiePID=get_cookie('pid');
		//call webservice
		phoneSwitcher.callWebService(cookiePID);
	}
	else if(urlPID!=null){
		//try to erase all related cookies
		delete_cookie('pid');
		delete_cookie('phoneNum');
	}
	else if(phoneSwitcher.pidDefinedAndValid(cookiePID) && cookiePHONE!=null){
		//update the phone number with current cookie
		phoneSwitcher.replacePhoneNumbers();
	}
	else if(phoneSwitcher.pidDefinedAndValid(cookiePID) && cookiePHONE==null){
		//call webservice
		phoneSwitcher.callWebService(cookiePID);
	}
}

//checks a value to see if it is a valid phone id
phoneSwitcher.pidDefinedAndValid=function(tempValue){
	return (tempValue!=null && (tempValue.charAt(0)=="P" || tempValue.charAt(0)=="p"));
}


/* STRINGS */

function trimStr(str){
	var whitespace=' \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000';
	for(var i=0;i<str.length;i++){
		if(whitespace.indexOf(str.charAt(i)) === -1){
			str = str.substring(i);
			break;
		}
	}
	for(i=str.length-1;i>=0;i--){
		if(whitespace.indexOf(str.charAt(i)) === -1){
			str = str.substring(0, i + 1);
			break;
		}
	}
	return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}


/* URL */

function getURLParam(name){
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  
  if( results == null )
    return null;
  else
    return results[1];
}


/* COOKIES */

function set_cookie(name,value,days,path,domain,secure){
  var cookie_string = name + "=" + escape ( value );
	
	if(days){
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		cookie_string += "; expires="+date.toGMTString();
	}

  if(path){cookie_string+="; path="+escape(path);};

  if(domain){cookie_string+="; domain="+escape(domain);};
  
  if(secure){cookie_string+="; secure";};
  
  document.cookie=cookie_string;
}

function get_cookie(cookie_name){
  var results = document.cookie.match('(^|;) ?' + cookie_name + '=([^;]*)(;|$)');

  if ( results )
    return ( unescape(results[2]) );
  else
    return null;
}

function delete_cookie(cookie_name){
  var cookie_date = new Date ();
  cookie_date.setTime ( cookie_date.getTime() - 1 );
  document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
}


/* XMLHTTP */

function sendRequest(url,callback,postData) {
	var req = createXMLHTTPObject();
	if (!req) return;
	var method = (postData) ? "POST" : "GET";
	req.open(method,url,true);
	req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	
	if(postData){req.setRequestHeader('Content-type','application/x-www-form-urlencoded');}
	
	req.onreadystatechange = function(){
		if(req.readyState != 4) return;
		if(req.status != 200 && req.status != 304){return;}
		callback(req);
	}
	
	if (req.readyState == 4) return;
	req.send(postData);
}

function XMLHttpFactories() {
	return [
		function(){return new XMLHttpRequest()},
		function(){return new ActiveXObject("Msxml2.XMLHTTP")},
		function(){return new ActiveXObject("Msxml3.XMLHTTP")},
		function(){return new ActiveXObject("Microsoft.XMLHTTP")}
	];
}

function createXMLHTTPObject() {
	var xmlhttp = false;
	var factories = XMLHttpFactories();
	for(var i=0;i<factories.length;i++){
		try{xmlhttp = factories[i]();}
		catch(e){continue;}
		break;
	}
	return xmlhttp;
}



//setup phoneSwitcher
phoneSwitcher.init();