/**
*
*  URL encode / decode
*  http://www.webtoolkit.info/
*
**/
 
var Url = {
 
	// public method for url encoding
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},
 
	// public method for url decoding
	decode : function (string) {
		return this._utf8_decode(unescape(string));
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (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 < 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);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
 
}


function split(previousSplit_S) {
	
	newSplit_S = '';
	if (previousSplit_S == '') {
		newSplit_S = '?';
	} else if (previousSplit_S == '?') {
		newSplit_S = '&';
	} else if (previousSplit_S == '&') {
		newSplit_S = '&';
	}
	
	return newSplit_S;
}



function generateUrl() {
	
	if (document.landingPageUrlForm.acceptDisclaimer.checked == false) {
		
		alert('Please read and accept disclaimer before using this tool');
		document.landingPageUrlForm.acceptDisclaimer.select();
		document.landingPageUrlForm.acceptDisclaimer.focus();
		
	} else {
	
		// Clean up field(s)
		document.landingPageUrlForm.landingPageUrl.value = '';
		
		// Validate fields
		if (document.landingPageUrlForm.landingPageUrlWithourParameters.value.length == 0 || document.landingPageUrlForm.landingPageUrlWithourParameters.value == "http://") {
			
			alert('Please enter a valid Landing Page URL');
			document.landingPageUrlForm.landingPageUrlWithourParameters.select();
			document.landingPageUrlForm.landingPageUrlWithourParameters.focus();
			
		} else if (document.landingPageUrlForm.utm_source.value.length == 0) {
			
			alert('Please enter a Campaign Source');
			document.landingPageUrlForm.utm_source.select();
			document.landingPageUrlForm.utm_source.focus();
			
		} else if (document.landingPageUrlForm.utm_medium.value.length == 0) {
			
			alert('Please enter a Campaign Medium');
			document.landingPageUrlForm.utm_medium.select();
			document.landingPageUrlForm.utm_medium.focus();
			
		} else if (document.landingPageUrlForm.utm_campaign.value.length == 0) {
			
			alert('Please enter a Campaign Name');
			document.landingPageUrlForm.utm_campaign.select();
			document.landingPageUrlForm.utm_campaign.focus();
			
		} else {
			
			landingPageUrlWithourParameters_S = document.landingPageUrlForm.landingPageUrlWithourParameters.value;
			cid_S = document.landingPageUrlForm.cid.value;
			
			autoAid = document.landingPageUrlForm.aid_automatic;
			aid_S = '';
			if (autoAid.checked) {
				aid_S = getAutoIncrementAid();
			} else {
				aid_S = document.landingPageUrlForm.aid.value;
			}
			
			campaignSource_S = document.landingPageUrlForm.utm_source.value;
			campaignMedium_S = document.landingPageUrlForm.utm_medium.value;
			handleTerm();
			campaignTerm_S = document.landingPageUrlForm.utm_term.value;
			campaignContent_S = document.landingPageUrlForm.utm_content.value;
			campaignName_S = document.landingPageUrlForm.utm_campaign.value;
			
			split_S = '';
			
			landingPageUrl_S = landingPageUrlWithourParameters_S;
			
			if (cid_S.length > 0) {
				split_S = split(split_S);
				landingPageUrl_S = landingPageUrl_S + split_S + "cid=" + Url.encode(cid_S); 
			}
			
			if (aid_S.length > 0) {
				split_S = split(split_S);
				landingPageUrl_S = landingPageUrl_S + split_S + "aid=" + Url.encode(aid_S);; 
			}
			
			if (campaignSource_S.length > 0) {
				split_S = split(split_S);
				landingPageUrl_S = landingPageUrl_S + split_S + "utm_source=" + Url.encode(campaignSource_S); 
			}
			
			if (campaignMedium_S.length > 0) {
				split_S = split(split_S);
				landingPageUrl_S = landingPageUrl_S + split_S + "utm_medium=" + Url.encode(campaignMedium_S); 
			}
			
			if (campaignTerm_S.length > 0) {
				split_S = split(split_S);
				
				autoTerm = document.landingPageUrlForm.utm_term_automatic;
				if (autoTerm.checked) {
					landingPageUrl_S = landingPageUrl_S + split_S + "utm_term=" + campaignTerm_S;
				} else {
					landingPageUrl_S = landingPageUrl_S + split_S + "utm_term=" + Url.encode(campaignTerm_S);
				}
			}
			
			if (campaignContent_S.length > 0) {
				split_S = split(split_S);
				landingPageUrl_S = landingPageUrl_S + split_S + "utm_content=" + Url.encode(campaignContent_S); 
			}
			
			if (campaignName_S.length > 0) {
				split_S = split(split_S);
				landingPageUrl_S = landingPageUrl_S + split_S + "utm_campaign=" + Url.encode(campaignName_S); 
			}
			
			document.landingPageUrlForm.landingPageUrl.value = landingPageUrl_S;
		}
	}
}



function handleTerm() {
	
	autoTerm = document.landingPageUrlForm.utm_term_automatic;
	manualTerm = document.landingPageUrlForm.utm_term;
	if (autoTerm.checked) {
		manualTerm.value='{KeyWord:not-set-by-gaw}'
		manualTerm.readOnly = true;
	} else {
		manualTerm.value='';
		manualTerm.readOnly = false;
	}
}


function handleAid() {
	
	autoAid = document.landingPageUrlForm.aid_automatic;
	manualAid = document.landingPageUrlForm.aid;
	
	if (autoAid.checked) {
		
		if (manualAid.value == '') {
			autoAid.checked = false;
			manualAid.readOnly = false;
			alert('[aid] is missing (must be an integer)');
			
			
		} else if (!isInteger(manualAid.value)) {
			autoAid.checked = false;
			manualAid.readOnly = false;
			alert('[aid] is not an integer');
			
		} else {
			
			if (autoAid.checked) {
				manualAid.readOnly = true;
			} else {
				manualAid.readOnly = false;
			}
		}
		
	} else {
		manualAid.readOnly = false;
	}
}



function isInteger(number_I) {
	number2_I = Number(number_I);
    return parseInt(number_I) == number2_I;
}



function getAutoIncrementAid() {
	
	aid_S = document.landingPageUrlForm.aid;
	aid_S.readOnly = false;
	
	aid_I = aid_S.value;
	aid_I = parseInt(aid_I);
	aid_I++;
	
	aid_I = '' + aid_I;
	aid_S.value = aid_I;

	aid_S.readOnly = true;
	
	return aid_I;
}






