/**
*  Generic Banners
*  @author : AffiliRed 
*  @version : 1.0  
*/
/*Constants will go here*/

var DATE_EU_FORMAT = 1;
var DATE_US_FORMAT = 2;

function generate_code(serverurl){
 	var network = trim(document.getElementById("network").value); 
 	var affiliateID = trim(document.getElementById("affiliateid").value);
 	if(affiliateID == ''){
 		alert('AffiliateID Must be provided');
 		return false;
 	}
 	if(document.getElementById('banner').value == '' ){  
 		alert('Please select a banner first');
 		return false;
 	}
 		
 	if((network == 'eu' || network == 'sp' || network == 'uk'  || network == 'us' ) && document.getElementById('programmeid').value == '' ){  
 		alert('Affiliate programme must be selected');
 		return false;
 	} 
 	
 	if(network == 'ssaid' && document.getElementById('bannerid').value == '' ){  
 		alert('BannerID Must be provided');
 		return false;
 	}
 			
	var code = '<script language="javascript" src="'+serverurl+'affiliates/v1/affilired_search.js" type="text/javascript"></script>';
	code = code + '\n' + '<script language="javascript" type="text/javascript">';
	code = code + '\n' + 'var affiliateID = "' + affiliateID + '";';
	code = code + '\n' + 'var trackingref = "' + document.getElementById("trackingref").value + '";';
	code = code + '\n' + 'var banner = "' + document.getElementById("banner").value + '";';
	if(document.getElementById("dateformat")){
		code = code + '\n' + 'var dateFormat = "' + document.getElementById("dateformat").value + '";';
	}else{
       code = code + '\n' + 'var dateFormat ="" ; ';
    }
	code = code + '\n' + 'var base = "' + serverurl + '";';
    code = code + '\n' + 'var network = "' + network + '";';
    if(document.getElementById("programmeid") != null ){
    	code = code + '\n' + 'var programeID = "' + document.getElementById("programmeid").value + '";';
    }else{
       code = code + '\n' + 'var programeID ="" ; ';
    }if(document.getElementById("language") != null ){
    	code = code + '\n' + 'var lang = "' + document.getElementById("language").value + '";';
    }else{
       code = code + '\n' + 'var lang ="" ; ';
    }if(document.getElementById("bordercolour") != null ){
    	code = code + '\n' + 'var borderColour = "' +str_replace('#','', document.getElementById("bordercolour").value) + '";';
    }else{
       code = code + '\n' + 'var borderColour ="" ; ';
    }if(document.getElementById("backgroundcolour") != null ){
    	 code = code + '\n' + 'var backgroundColour = "' +str_replace('#','', document.getElementById("backgroundcolour").value) + '";';
    }else{
       code = code + '\n' + 'var backgroundColour ="" ; ';
    }if(document.getElementById("fontcolour") != null ){
    	 code = code + '\n' + 'var fontColour = "' + str_replace('#','',document.getElementById("fontcolour").value) + '";';
    }else{
       code = code + '\n' + 'var fontColour ="" ; ';
    }if(document.getElementById("bannerid") != null ){
    	code = code + '\n' + 'var bannerid = "' + document.getElementById("bannerid").value + '";';
    }else{
       code = code + '\n' + 'var bannerid ="" ; ';
    }
	code = code + '\n' + 'affilired_generic_searchbox'+ document.getElementById("banner_type").value+'(base,  affiliateID, lang, trackingref,banner,borderColour,backgroundColour,fontColour,network,programeID,dateFormat,bannerid);';
	code = code + '\n' + '</script>'; 
	document.getElementById("code").value = code;
} 
	
function str_replace(search, replace, subject) { 
    var s = subject;
    var ra = r instanceof Array, sa = s instanceof Array;
    var f = [].concat(search);
    var r = [].concat(replace);
    var i = (s = [].concat(s)).length;
    var j = 0;
    
    while (j = 0, i--) {
        if (s[i]) {
            while (s[i] = (s[i]+'').split(f[j]).join(ra ? r[j] || "" : r[0]), ++j in f){};
        }
    }
 
    return sa ? s : s[0];
}

function preview_banner(base){
	if (document.getElementById("code").value == ''){ 
		alert("Please generate code firstly.");	  
	}else{
		var url = base+'affiliates/preview.php?code='+document.getElementById("code").value;
		window.open(url,'preview');
	}
		
}

function select_banner(banner,banner_id,banner_count,banner_type,select,unselect){
	if (document.getElementById('banner' + banner).innerHTML == select){
		document.getElementById('banner').value = banner_id; 	
		document.getElementById('banner_type').value = banner_type;
 
		document.getElementById('banner' + banner).innerHTML = unselect;
		for (i = 1; i <= banner_count; i++){ 
			if (i == banner){
				document.getElementById("banner_area" + i).style.display = '';
			} else {
				document.getElementById("banner_area" + i).style.display = 'none';
			}
		}
	} else {
		document.getElementById('banner').value = '';
		document.getElementById('banner_type').value = ''; 	
		document.getElementById('banner' + banner).innerHTML = select;
		for (i = 1; i <= banner_count; i++){
			document.getElementById("banner_area" + i).style.display = '';
		}
	}
}

function GetHttpObject(){ 
	var objXMLHttp=null;
	if (window.XMLHttpRequest){
		objXMLHttp=new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	return objXMLHttp;
}

function change_destination(action_url,merchant,country){
    xmlHttp=GetHttpObject();
	if (xmlHttp==null)	{
		alert ("Browser does not support HTTP Request");
		return;
	}  
	var url=action_url+"?method=getarea&country="+country+"&merchant="+merchant+"&random="+Math.random();
 	xmlHttp.onreadystatechange=stateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);	 
	 
} 

function change_hotel(action_url,merchant,country){
	
	xmlHttp=GetHttpObject();
	if (xmlHttp==null)	{
		alert ("Browser does not support HTTP Request");
		return;
	}  
	var url=action_url+"?method=gethotel&country="+country+"&merchant="+merchant+"&random="+Math.random();
 	xmlHttp.onreadystatechange=stateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);	 
	 
} 

function stateChanged(){
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
		 var response = xmlHttp.responseText;  
		 	if(response != null && response.indexOf('|') > 0){
			 	var divTag = document.getElementById('destination') ;
			 	if(divTag == null ){
			 		 divTag = document.getElementById('hotel');
			 	}
			 	
			 	while (divTag.options.length) divTag.options[0] = null;
			 	
			 	var index = response.indexOf('|') ;
			 	var counter = 0;
				 	while(index > 0){
				 		var currentOption = response.substring(counter,index); 
				 		counter = index+1;
				 		index = response.indexOf('|',counter) ;
				 		var keyIndex = currentOption.indexOf(',');						 		
				 		if(keyIndex >= 0 ){ 
				 			var key = currentOption.substring(0,keyIndex);
				 			var value = currentOption.substring(keyIndex+1);  
				 			divTag.options[divTag.length]= new Option(value, key, false, false);
				 		}	 
				 	} 
			} 
	}
} 

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}
function rtrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}

function  submitForm(){	
    if (document.getElementById("nights").value == ''){ 
			alert("Please select your stay duration");	 
			return false;
	} 
	
	reference = document.getElementById("hotelingo_reference").value;
   
	if(reference == 15 || reference == 1 || reference == 13){
	if (trim(document.getElementById("destination").value) == ''){
			alert("Please select a  country and destination.");
			return false;
	  }
	}
	
	if(reference == 5 || reference == 3){
	if (trim(document.getElementById("country").value) == ''){
			alert("Please select a  destination.");
			return false;
	  }
	}
	
	if(reference == 22){
	if (trim(document.getElementById("hotel").value) == ''){
			alert("Please select a  hotel.");
			return false;
	  }
	}
	
	if(reference == 29){
	if (trim(document.getElementById("FABChoice").value) == ''){
			alert("Please select a  country and city.");
			return false;
	  }
	}
	 
	/*Start Date Validation START*/
	var dateFormat = document.getElementById("dateFormat").value;
	if(dateFormat == ''){
		dateFormat = DATE_EU_FORMAT ; /*European format */ 
	}
	
	 
	var startDate = document.getElementById("startdate").value;
	var slashIndex1 = startDate.indexOf('/');
	if(startDate == '' || slashIndex1 <= 0 ){
		alert("Invalid date should be "+( dateFormat == DATE_EU_FORMAT ? "dd/mm/yy" : "mm/dd/yy"));
		return false;
	}
 
	var slashIndex2 = startDate.indexOf('/',slashIndex1+1);
	if(slashIndex2 <= 0 ){
		alert("Invalid date should be "+( dateFormat == DATE_EU_FORMAT ? "dd/mm/yy" : "mm/dd/yy"));
		return false;
	}
	
	var day = 	startDate.substring(0,slashIndex1);	
	var month = startDate.substring(slashIndex1+1,slashIndex2);
	 		
	var year =  eval(startDate.substring(slashIndex2+1));
	if(dateFormat == DATE_US_FORMAT){	
		var tmp = day;
		day = month;
		month = tmp;
	}
	 
	if (isNaN(day) || isNaN(month) || isNaN(year) || day > 31 || day < 1 || month > 12 || month < 1) {
 	  	alert("Invalid date should be "+( dateFormat == DATE_EU_FORMAT ? "dd/mm/yy" : "mm/dd/yy"));
   		return false;
	}
		 
	if(year < 2000){
		year = parseInt((2000+eval(year)));
	}

 
	if((year%4 == 0) && (month == 2) && (day > 29)){
  	  alert("Invalid date.29 days in february " + year);
	  return false;
	}
	if((year%4 != 0) && (month == 2) && (day > 28)){
	  alert("Invalid date.Please check the day/month.");
	  return false;
	}
	
	if((month == 4 || month == 6 || month == 9 || month == 11 ) && (day > 30)){
	  alert("Invalid date.Please check the day/month.");
	  return false;
	}
	
	/*Adjust the month*/
	month = month -1;			
	var checkinDate = new Date(year,month,day); 
	var today = new Date();  	
	if(today >= checkinDate ){
	  alert('Checkin date must be greater then today');	
	  return false;	
	}
	
 
	/*Start Date Validation END*/
	var nights = eval(document.getElementById("nights").value);
	if(nights < 1 || nights > 45){
	 alert('Minimum stay should not be less then one and greater then 45.');	
	  return false;	
	}
	if(document.getElementById('bannerform')){
	   var url = document.getElementById('bannerform').action+'?'+constructParameters();
	}
	else{
	  var url = document.getElementById('theForm').action+'?'+constructParameters();
	}
	

	/*document.getElementById("bannerform").action = url;*/
	window.open(url);	 
		
	return false;
 
}

function replaceAll(str, replacements) {
				var idx = str.indexOf( replacements[0]);
					while (idx > -1 ) {
						str = str.replace(replacements[0], replacements[1]);
						idx = str.indexOf(replacements[0]);
					} return str;
				}

				/* Función para construir la cadena de parámetros que le pasamos a la función embeddedSend (encargada del AJAX) */
				function normalizeParameters(str) {
					str = escape(str);
					return replaceAll(str, ['+', '%2B']);
}
 
function constructParameters() {
		var getstr = '';
		for (i = 0; i < document.forms[0].elements.length; i++) {
			obj = document.forms[0].elements[i];
			if (obj.disabled) continue;
			switch (obj.tagName.toLowerCase()) {
				case 'input':		
					switch (obj.type.toLowerCase()) {
						case 'checkbox': case 'radio':
							if (obj.checked) {
								if (getstr != '') getstr += '&';
								getstr += obj.name + '=' + normalizeParameters(obj.value);
							}
							break;
						default:
							if (getstr != '') getstr += '&';
							getstr += obj.name + '=' + normalizeParameters(obj.value);
							break;
					}
					break;
				case 'select':
					if (obj.selectedIndex > -1) {
						if (getstr != '') getstr += '&';
						getstr += obj.name + '=' + normalizeParameters(obj.options[obj.selectedIndex].value);
					}
					break;
				case 'textarea':
					if (getstr != '') getstr += '&';
					getstr += obj.name + '=' + normalizeParameters(obj.value);
					break;
			}
		} 
		return getstr;
}

