var _forms = null;
var inputs = new Array();
var selects = new Array();
var labels = new Array();
var radios = new Array();
var radioLabels = new Array();
var checkboxes = new Array();
var checkboxLabels = new Array();
var buttons = new Array();
var selects = new Array();
var all_selects = false;
var active_select = null;
var agt = navigator.userAgent.toLowerCase();
//this.ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var isMac = is_mac();
var selectText = "please select";
var IN_CFORMS = true;

function is_mac() {
	if (navigator.appVersion.indexOf("Safari") != -1)
	{
		if(!window.getComputedStyle)
		{
   			return true;
  		}
	}
	return false;
}
function initContact() {
	var contacts = document.getElementById("footer");
	var contacts2 = document.getElementById("footer2");
	var btn= document.getElementById("contact-link");
	var btn2 = document.getElementById("contact2-link");
	var i=2;
	while(btn || i<3) {
		if (contacts)
		{
			if(!btn) {
				btn = document.getElementById("contact2-link"+(i++));
				continue;
			}
			btn.onclick = (function(height) { 
				return function()
				{
					if ((contacts.style.display == 'none' || !contacts.style.display) && (!contacts2 || contacts2.style.display=="none" || !contacts2.style.display))
					{
						contacts.style.height="0px";
						contacts.style.display="block";
						scroll(findPosX(contacts),findPosY(contacts));
						AnimationFunctions.fade(contacts,0,height,250,function(){ contacts.style.display="block"; });
						if(contacts2) 
						{
							contacts2.style.display="none";
						}
					}
					else
					{
						contacts.style.height=height+"px";
						AnimationFunctions.fade(contacts,height,0,250,function(){ contacts.style.display="none";});
						if(contacts2 && contacts2.style.display != "none") 
						{
							contacts2.style.display="none";
						}
					}
				}
			})(contacts.offsetHeight);
		}
		btn = document.getElementById("contact-link"+(i++));
	}
	var i=2;
	while(btn2 || i<3) {
		if (contacts2)
		{
			if(!btn2) {
				btn2 = document.getElementById("contact2-link"+(i++));
				continue;
			}
			btn2.onclick = 
			(
				function(height) { 
					return function()
					{
						if ((contacts2.style.display == 'none' || !contacts2.style.display) && (!contacts || contacts.style.display=="none" || !contacts.style.display))
						{
							contacts2.style.height="0px";
							contacts2.style.display="block";
							scroll(findPosX(contacts2),findPosY(contacts2));
							AnimationFunctions.fade(contacts2,0,height,250,function(){ contacts2.style.display="block"; });
							if(contacts) 
							{
								contacts.style.display="none";
							}
						}
						else
						{
							contacts2.style.height=height+"px";
							AnimationFunctions.fade(contacts2,height,0,250,function(){ contacts2.style.display="none";});
							if(contacts && contacts.style.display != "none") { 
								contacts.style.display="none";
							}
						}
					}
				}
			)(contacts2.offsetHeight);
		}
		btn2 = document.getElementById("contact2-link"+(i++));
	}
	if(document.getElementById("subject")) {
		document.getElementById("subject").value= "choose"; 
		selectOther();
	}
	if(document.getElementById("footer")) { document.getElementById("footer").style.display="none"; }
	if(document.getElementById("footer2")) { document.getElementById("footer2").style.display="none"; }
	
	
}
function init() {
	if(!document.getElementById) {return false;}
	getElements();
	separateElements();
	replaceRadios();
	replaceCheckboxes();
	//replaceSelects();
	if (!isMac) {
		replaceButtons();	
	}
	initContact();
}


// getting all the required elements
function getElements() {
	for (var nf = 0; nf < document.getElementsByTagName("form").length; nf++) {
		for(var nfi = 0; nfi < document.forms[nf].getElementsByTagName("input").length; nfi++) {inputs.push(document.forms[nf].getElementsByTagName("input")[nfi]);}
		for(var nfl = 0; nfl < document.forms[nf].getElementsByTagName("label").length; nfl++) {labels.push(document.forms[nf].getElementsByTagName("label")[nfl]);}
		for(var nfs = 0; nfs < document.forms[nf].getElementsByTagName("select").length; nfs++) {selects.push(document.forms[nf].getElementsByTagName("select")[nfs]);}
	}
}

// separating all the elements in their respective arrays
function separateElements() {
	var r = 0; var c = 0; var t = 0; var rl = 0; var cl = 0; var tl = 0; var b = 0;
	for (var q = 0; q < inputs.length; q++) {
		if(inputs[q].type == "radio") {
			radios[r] = inputs[q]; ++r;
			for(var w = 0; w < labels.length; w++) {
				if((inputs[q].id) && labels[w].htmlFor == inputs[q].id)
				{
					radioLabels[rl] = labels[w];
					++rl;
				}
			}
		}
		if(inputs[q].type == "checkbox") {
			checkboxes[c] = inputs[q]; ++c;
			for(var w = 0; w < labels.length; w++) {
				if((inputs[q].id) && (labels[w].htmlFor == inputs[q].id))
				{
					checkboxLabels[cl] = labels[w];
					++cl;
				}
			}
		}
		if((inputs[q].type == "submit") || (inputs[q].type == "button")) {
			buttons[b] = inputs[q]; ++b;
		}
	}
}

//replacing radio buttons
function replaceRadios() {
	for (var q = 0; q < radios.length; q++) {
		radios[q].className = "outtaHere";
		var radioArea = document.createElement("div");
		if(radios[q].checked) {
			radioArea.className = "radioAreaChecked";
		}
		else
		{
			radioArea.className = "radioArea";
		}
		radioArea.id = "myRadio" + q;
		radios[q].parentNode.insertBefore(radioArea, radios[q]);
		radios[q]._ra = radioArea;

		radioArea.onclick = new Function('rechangeRadios('+q+')');
		if (radioLabels[q])
		{
			radioLabels[q].onclick = new Function('rechangeRadios('+q+')');
		}
	}
	return true;
}

//checking radios
function checkRadios(who) {
	var what = radios[who]._ra;
	for(var q = 0; q < radios.length; q++) {
		if((radios[q]._ra.className == "radioAreaChecked")&&(radios[q]._ra.nextSibling.name == radios[who].name))
		{
			radios[q]._ra.className = "radioArea";
		}
	}
	what.className = "radioAreaChecked";
}

//changing radios
function changeRadios(who) {
	if(radios[who].checked) {
		for(var q = 0; q < radios.length; q++) {
			if(radios[q].name == radios[who].name) {
				radios[q].checked = false;
			} 
			radios[who].checked = true; 
			checkRadios(who);
		}
	}
}

//rechanging radios
function rechangeRadios(who) {
	if(!radios[who].checked) {
		for(var q = 0; q < radios.length; q++) {
			if(radios[q].name == radios[who].name)	{
				radios[q].checked = false; 
			}
			radios[who].checked = true; 
			checkRadios(who);
		}
	}
}

//replacing checkboxes
function replaceCheckboxes() {
	for (var q = 0; q < checkboxes.length; q++) {
		checkboxes[q].className = "outtaHere";
		var checkboxArea = document.createElement("div");
		if(checkboxes[q].checked) {
			checkboxArea.className = "checkboxAreaChecked";
		}
		else {
			checkboxArea.className = "checkboxArea";
		}
		checkboxArea.id = "myCheckbox" + q;
		checkboxes[q].parentNode.insertBefore(checkboxArea, checkboxes[q]);
		checkboxes[q]._ca = checkboxArea;
		checkboxArea.onclick = new Function('rechangeCheckboxes('+q+')');
		if (checkboxLabels[q])
		{
			checkboxLabels[q].onclick = new Function('changeCheckboxes('+q+')');
		}
		
		checkboxes[q].onkeydown = checkEvent;
	}
	return true;
}

//checking checkboxes
function checkCheckboxes(who, action) {
	var what = checkboxes[who]._ca;
	if(action == true) {
		what.className = "checkboxAreaChecked";
		what.checked = true;
	}
	if(action == false) {
		what.className = "checkboxArea";
		what.checked = false;
	}
}

//changing checkboxes
function changeCheckboxes(who) {
	if(checkboxes[who].checked) {
		checkCheckboxes(who, false);
	}
	else {
		checkCheckboxes(who, true);
	} 
}

//rechanging checkboxes
function rechangeCheckboxes(who) {
	var tester = false;
	if(checkboxes[who].checked == true) {
		tester = false;
	}
	else {
		tester = true;
	}
	checkboxes[who].checked = tester;
	checkCheckboxes(who, tester);
}

//check event
function checkEvent(e) {
	if (!e) var e = window.event;
	if(e.keyCode == 32) {for (var q = 0; q < checkboxes.length; q++) {if(this == checkboxes[q]) {changeCheckboxes(q);}}} //check if space is pressed
}

// replacing buttons
function replaceButtons() {
	for (var i = 0; i < buttons.length; i++) {
		// button holder
		var buttonHolder = document.createElement("div");
		buttonHolder.className = "buttonSubmit";		
		buttons[i].parentNode.appendChild(buttonHolder);
		
		// left image
		var buttonLeft = document.createElement("span");
		buttonLeft.className = "left";
		buttonHolder.appendChild(buttonLeft);
		
		// append button into holder
		buttonHolder.appendChild(buttons[i]);
		
		//right image
		var buttonRight = document.createElement('span');
		buttonRight.className = "right";
		buttonHolder.appendChild(buttonRight);
	}
}

//replacing selects
function replaceSelects() {
    for(var q = 0; q < selects.length; q++) {
    	
    	selects[q]._number = q;
		//create and build div structure
		var selectArea = document.createElement("div");
		
		var left = document.createElement("span");
		left.className = "left";
		selectArea.appendChild(left);
		
		var disabled = document.createElement("span");
		disabled.className = "disabled";
		selectArea.appendChild(disabled);
		
		selects[q]._disabled = disabled;
		
		var center = document.createElement("span");
		var button = document.createElement("a");
		var text = document.createTextNode(selectText);
		center.id = "mySelectText"+q;
		
		var stWidth = selects[q].offsetWidth;
		selectArea.style.width = stWidth + "px";

		button.href = "javascript:showOptions("+q+")";
		button.onkeydown = selectEvent;
		button.className = "selectButton";
		selectArea.className = "selectArea";
		selectArea.className += " " + selects[q].className;
		selectArea.id = "sarea"+q;
		center.className = "center";
		center.appendChild(text);
		selectArea.appendChild(center);
		selectArea.appendChild(button);
		
		//hide the select field
		selects[q].className += " outtaHere";
		//insert select div
		selects[q].parentNode.insertBefore(selectArea, selects[q]);
		//build & place options div

		var optionsDiv = document.createElement("div");
		
		var optionsList = document.createElement("ul");
		optionsDiv.appendChild(optionsList);
		
		selects[q]._options = optionsList;
		
		//optionsDiv.style.width = stWidth - 4 + "px";
		optionsDiv.style.width = stWidth + "px";
		optionsDiv._parent = selectArea;
		
		optionsDiv.className = "optionsDivInvisible";
		optionsDiv.id = "optionsDiv"+q;
	
		populateSelectOptions(selects[q]);	
		//selectArea.appendChild(optionsDiv);
		document.getElementsByTagName("body")[0].appendChild(optionsDiv);
	}
	all_selects = true;
}

//collecting select options
function populateSelectOptions(me) {
	me._options.innerHTML = "";
	
	for(var w = 0; w < me.options.length; w++) {
		
		var optionHolder = document.createElement('li');
		var optionLink = document.createElement('a');
		var optionTxt = document.createTextNode(me.options[w].text);
		
		optionLink.href = "javascript:showOptions("+me._number+"); selectMe('"+me.id+"',"+w+","+me._number+");";
		optionLink.appendChild(optionTxt);
		optionHolder.appendChild(optionLink);
		me._options.appendChild(optionHolder);
		//check for pre-selected items
		if(me.options[w].selected) {
			selectMe(me.id,w,me._number);
		}
	}
	if (me.disabled) {
		me._disabled.style.display = "block";
	}
	else {
		me._disabled.style.display = "none";
	}
}

//select event
function selectEvent(e) {
	if (!e) var e = window.event;
	var thecode = e.keyCode;
	switch(thecode){
		case 40: //down
			var fieldId = this.parentNode.parentNode.id.replace(/sarea/g, "");
			var linkNo = 0;
			for(var q = 0; q < selects[fieldId].options.length; q++) {if(selects[fieldId].options[q].selected) {linkNo = q;}}
			++linkNo;
			if(linkNo >= selects[fieldId].options.length) {linkNo = 0;}
			selectMe(selects[fieldId].id, linkNo, fieldId);
			break;
		case 38: //up
			var fieldId = this.parentNode.parentNode.id.replace(/sarea/g, "");
			var linkNo = 0;
			for(var q = 0; q < selects[fieldId].options.length; q++) {if(selects[fieldId].options[q].selected) {linkNo = q;}}
			--linkNo;
			if(linkNo < 0) {linkNo = selects[fieldId].options.length - 1;}
			selectMe(selects[fieldId].id, linkNo, fieldId);
			break;
		default:
			break;
	}
}

//selecting me
function selectMe(selectFieldId,linkNo,selectNo) {
	selectField = selects[selectNo];
	for(var k = 0; k < selectField.options.length; k++) {
		if(k==linkNo) {
			selectField.options[k].selected = true;
		}
		else {
			selectField.options[k].selected = false;
		}
	}
	
	//show selected option
	textVar = document.getElementById("mySelectText"+selectNo);
	var newText = document.createTextNode(selectField.options[linkNo].text);
	textVar.replaceChild(newText, textVar.childNodes[0]);
	if (selectField.onchange && all_selects)
			{
				eval(selectField.onchange());
			}
}

//showing options
function showOptions(g) {
		_elem = document.getElementById("optionsDiv"+g);		
		if (active_select && active_select != _elem) {
			active_select.className = "optionsDivInvisible";
			active_select.style.height = "auto";
		}
		if(_elem.className=="optionsDivInvisible") {
			_elem.style.left = "-9999px";
			_elem.style.top = findPosY(_elem._parent) + 19 + 'px';
			_elem.className = "optionsDivVisible";
			if (_elem.offsetHeight > 200)
			{
				_elem.style.height = "200px";
			}
			_elem.style.left = findPosX(_elem._parent) + 'px';
			
			active_select = _elem;
		}
		else if(_elem.className=="optionsDivVisible") {
			_elem.style.height = "auto";
			_elem.className = "optionsDivInvisible";
		}
		//_elem.onmouseout = hideOptions;
}
function selectOther() {
	var show=document.getElementById("subject").value=="other";
	document.getElementById("additional_subject").style.display = (show) ? "block" : "none";
}
function findPosY(obj) {
	var posTop = 0;
	while (obj.offsetParent) {posTop += obj.offsetTop; obj = obj.offsetParent;}
	return posTop;
}
function findPosX(obj) {
	var posLeft = 0;
	while (obj.offsetParent) {posLeft += obj.offsetLeft; obj = obj.offsetParent;}
	return posLeft;
}	
window.onload = init;





function AJAX() {
}
AJAX.count = 0;
AJAX.prototype = {
		getXmlHttp: function() { alert(_("Your browser does not support AJAX.")); },
		post: function(method, uri, data,cbloading,cbsuccess,cberror, isJSONResponse) {
			var encoded= new Array(), n = 0;
			for(var i in data) { encoded[n++] = i + "=" + encodeURIComponent(data[i]); } 
			var data = encoded.join("&");
		    
			var xmlhttp = this.getXmlHttp();
			
			var Self = this;
			xmlhttp.onreadystatechange = callback;
			xmlhttp.open(method, uri, true);
			xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			cbloading();
			xmlhttp.send(data);
			
			function callback() {
				if (xmlhttp.readyState != 4) return;
				
				xmlhttp.onreadystatechange = function() {}; 
				var cb = cbsuccess;
				var errorHandler = cberror;
				var result = {};
				if (xmlhttp.status != 200) {
					if(cberror) {  cberror(xmlhttp.status,xmlhttp.statusText); return; }
				}	
				if (!isJSONResponse) { 
					result = xmlhttp.responseText; 
				}
				else { 
					var s = "return " + xmlhttp.responseText;
					try { result = Function(s)(); }
					catch (e) { cberror(200, "JSON not valid"); return; }
				}
				if(cb) cb(result); 
			 };
		}
};

(function() {
	var xmlhttp = null;
	try { 
		xmlhttp = new XMLHttpRequest();
		if (xmlhttp) { xmlhttp = null; AJAX.prototype.getXmlHttp = function() { return new XMLHttpRequest(); }; }
	} catch (e) {
		try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			if (xmlhttp) { xmlhttp = null; AJAX.prototype.getXmlHttp = function() { return new ActiveXObject("Msxml2.XMLHTTP"); }; }
		} catch (e) {
			try { 
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
				if (xmlhttp) { xmlhttp = null; AJAX.prototype.getXmlHttp = function() { return new ActiveXObject("Microsoft.XMLHTTP"); }; }
			} catch (e) {}
		}
	}
})();

function sendMail(id) {
	var timeout;
	function setText(text,iserror) {
		var infos=document.getElementById("information");
		function clearandSetInfo() {
			while(infos.hasChildNodes()) { infos.removeChild(infos.firstChild) }
			infos.appendChild(document.createTextNode(text));
		}
		clearandSetInfo();
		infos.style.display="block";
		if(!iserror) {
			infos.style.color="#7DD302";
		} else {
			infos.style.color="red";
		}
		if(timeout) {
			clearTimeout(timeout);
			timeout=null;
		}
		timeout = setTimeout(function() 
		{ 
			infos.style.display="none";
		} , 5000);
	}
	
	var text=document.forms[id].text.value;
	var name=document.forms[id].name.value;
	var mail=document.forms[id].mail.value;
	var number=document.forms[id].number.value;
	var subject = document.forms[id].subject.value;
	var type=document.forms[id].type.value || 1;
	var subject_extra = document.forms[id].additional_subject ? document.forms[id].additional_subject.value : "";
	
	var subjectMapping = {
			bill : "Question regarding my bill",
			download : "Content not received or download problem",
			cancelclub : "Cancel my club subscription",
			subscribepromotion : "Subscribe me for promotions",
			removemarketing : "Remove me from marketing database",
			misc : "Miscellaneous",
			other : subject_extra
	}
	if(subject == "choose") {
		setText("Please choose your subject",true);
		return;
	}
	if(!subjectMapping[subject] && !subject) {
		setText("Your subject is empty",true);
		return;
	}
	if(!text) {
		setText("Your text is empty",true);
		return;
	}
	if(!mail) {
		setText("Your mail is empty",true);
		return;
	}
	if(!number) {
		setText("Your mobile number is empty",true);
		return;
	}
	if(!name) {
		setText("Your name is empty",true);
		return;
	}
	if(type == 4 && document.forms[id].newsletter.checked) {
		type=8;
	}
	
	var data = { text : text, name : name, mail : mail, number : number, subject : subjectMapping[subject] ? subjectMapping[subject] : subject , type : type };
	
	(new AJAX()).post(
			"POST",
			"php/sendmail.php", 
			data,
			function() { setText("Please wait"); },
			function(response) { 
				if(response && response["code"] == 0) {
					setText("Message has been sent"); 
					document.forms[id].reset();
				} else {
					setText("An internal error occured");
				}
			},
			function() { setText("An internal error occured"); },
			true
	);
}
AnimationFunctions =function() {}
AnimationFunctions.startAnimation = function(duration,end,callback,final_cb,cancel_cb) 
{
	var start = (new Date()).getTime();
	var lastanim = start;
	
	var f = end / duration; //steppEermillisecond
	callback(0);
	var timer = setTimeout(anim, 0);
	
	function anim() {
		timer = null;
		var dt = (new Date()).getTime() - start;
		if (dt < duration) {
			lastanim=dt * f;
			callback(lastanim);
			timer = setTimeout(anim, 0);
		} else {
			lastanim=end;
			callback(end);
			if (final_cb) final_cb();
		}
	}
	return function(callEndCb,enableCancel) 
	{
		if (timer) clearTimeout(timer);
		if (callEndCb) {
			callback(end);
		}
		if(cancel_cb) {
			if (cancel_cb) cancel_cb(lastanim,end);
		}
	};
}
AnimationFunctions.fade = function(node,start,end,duration,final_cb) {
	function cb_final() {
		if(final_cb) { final_cb(); }
	}
	AnimationFunctions.startAnimation(duration, Math.abs(start-end),
	function(val) {
		var tmpvalue=start;
		if(start>end) { tmpvalue=tmpvalue-val; }
		else { tmpvalue=tmpvalue+val; }
		AnimationFunctions.setHeight(node,tmpvalue);
		scroll(findPosX(node),findPosY(node)+val);
	},cb_final);
}
AnimationFunctions.setHeight = function(node,value) {
	node.style.height=value +"px";
}
