var schema_xsl = null;
var schema_xml = null;
function loadSchema(days_mod){
	schema_xsl = xml._download("schema_xsl.jsp?days_mod=" + days_mod, null, true);
	schema_xml = xml.download("schema.jsp?type=narrow", null, true);
	document.body.insertAdjacentHTML("beforeEnd", xml.transform(schema_xml, schema_xsl));
}

function OpenSchema(id){
	var title = document.getElementById(id);
	//alert(title.offsetTop);
	
	var win = document.getElementById("bg");
	var button = GetChildElementById(win, id);
	var box = GetRectCoordinates(button);			
	var top = box.bottom + 7;
	var left = box.left;
	var calendar = document.getElementById("calendar");
	
	//var top = getTopForCalendar(title, calendar);
					
	calendar.style.top = top + "px";
	calendar.style.left = left + "px";
	calendar.style.visibility = "visible";
}

function getTopForCalendar(obj1, obj2){
	//alert(navigator.userAgent);MSIE 8.0
	if(navigator.userAgent.toLowerCase().indexOf("msie 8.") != -1)
	{
		return obj1.offsetTop + 200 - obj2.clientHeight - 4;
	}
	else if(navigator.userAgent.toLowerCase().indexOf("msie") != -1)
	{
		return obj1.offsetTop + 200 - obj2.clientHeight - 4;
	}
	else
	{
		return obj1.offsetTop + 200 - obj2.clientHeight - 4;
	}
}
function CMS_CalendarUpdate(year, month, type){
	schema_xml = xml.download("schema.jsp?type=narrow&year=" + year + "&month=" + month, null, true);
	var calendar = document.getElementById("calendar");
	calendar.parentNode.removeChild(calendar);
	document.body.insertAdjacentHTML("beforeEnd", xml.transform(schema_xml, schema_xsl));
	OpenSchema("form_order_date");
}

function CMS_CalendarDayPick(date, days_mod){
	if(date == "not_valid")
	{
		if(days_mod == -1)
			alert("Du kan bara välja ett datum fr.o.m. idag och framåt!");
		else
			alert("Du kan bara välja ett datum en dag bakåt i tiden!");
	}
	else {
		document.getElementById("form_order_date").value = date;
		document.getElementById("calendar").style.visibility = "hidden";
	} 
}

function CMS_Calendar_hide() {
	document.getElementById("calendar").style.visibility = "hidden";
}

///////////////////////// Misc functions \\\\\\\\\\\\\\\\\\\\\\\\\\\
function GetChildElementById(obj, value){
	var retVal = null;
	var child = obj.firstChild;
	
	while(retVal == null && (child = SkipNonElements(child)) != null)
	{
		var id = child.id;
		
		if(id != null && id == value)
		{
			retVal = child;
		}
		else
		{
			retVal = GetChildElementById(child, value);
		}
		
		if(retVal == null)
			child = child.nextSibling;
		else
			child = null;
	}
	
	return retVal;
}

function SkipNonElements(obj) { // Skip nodes that are not elements 

	while(obj != null && obj.nodeType != 1)
		obj = obj.nextSibling;

	return obj;
}

function GetRectCoordinates(element){
	//if(navigator.userAgent.toLowerCase().indexOf("gecko") != -1)
	//{
	//	var box = document.getBoxObjectFor(element)
	//	return new ElementRect(element, box.x, box.y, box.x + box.width, box.y + box.height);
	//}
	//else
	//{
		var box = element.getBoundingClientRect();
		return new ElementRect(element, box.left, box.top, box.right, box.bottom);
	//}
}

function ElementRect(element, left, top, right, bottom) {
	this.element = element;
	this.left = left;
	this.top = top;
	this.right = right;
	this.bottom = bottom;
}

function ValidPhoneNum(num, min){
	var retValue = true;
	
	if(!num.match(/^(\d+)$/))
	 retValue = false;
	 
	if(num.length > 15 ||  num.length < min)
		retValue = false;
	
	return retValue;
}

function validateEmail(str){
	var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
	var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid
	if (!reg1.test(str) && reg2.test(str))
		return true;
	else
		return false;
}

function validChars(str){
	// RegEx searches for letters, numbers, -, . and whitespace chars.
	strRegex = "^[0-9a-öA-Ö-&\\:\\s\\+]+$";
	
	if(str == "")
		return true;
	if(!str.match(strRegex)) {
		//alert("Du kan endast använda dig av bokstäver,siffror, mellanslag och kolon(:)!");
		return false;
	}
	else
		return true;
}

function replaceCharsTfn(str) {
	str = str.replace(/-/g,'');
	str = str.replace(/\+/g,'');
	return str;
}

function replaceCharsGeneral(str) {
	str = str.trim();
	str = str.replace(/</g,'');
	str = str.replace(/>/g,'');
	str = str.replace(/&/g,'');
	
	return str;
}
function send_message() {
	// ------  Get values from form --------- //
	var cn = replaceCharsGeneral(document.getElementById('form_contact_name').value);
	var mail = replaceCharsGeneral(document.getElementById('form_contact_email').value);
	var subject = replaceCharsGeneral(document.getElementById('form_contact_subject').value);
	var text = replaceCharsGeneral(document.getElementById('form_contact_text').value);
	var copy = false;
	if(document.getElementById("form_contact_copy").checked)
		copy = true;
		
	// ------  Check validity of input --------- //
	if(cn.trim() == "") {
		alert("Du måste ange ditt namn!");
		return 0;
	}
	if(mail.trim() == "") {
		alert("Du måste ange en e-postadress!");
		return 0;
	}
	if(mail.trim() != "" && !validateEmail(mail)) {
		alert("Kontrollera e-postadressen!");
		return 0;
	}
	if(text.trim() == "" ) {
		alert("Du har inte skrivit något textmeddelande!");
		return 0;
	}
	
	// ------  Create xml doc for post --------- //
	var doc = xml.createXMLDocument();
	xml.appendElement(doc.documentElement, "cn", cn);
	xml.appendElement(doc.documentElement, "mail", mail);
	xml.appendElement(doc.documentElement, "subject", subject);
	xml.appendElement(doc.documentElement, "text", text);
	xml.appendElement(doc.documentElement, "copy", copy);
	
	// ------ Post --------- //
	var result = xml._download("kontakt_save.jsp", doc, false);
	if(result != "success")
		alert(result);
	else {
		document.getElementById('contact_email').style.display = "none";
		document.getElementById('contact_email_result').style.display = "block";
	} 
	
}
function send_order() {
	// ------  Get values from form --------- //
	var datum = document.getElementById('form_order_date').value;
	var start = replaceCharsGeneral(document.getElementById('form_order_start').value);
	var stop = replaceCharsGeneral(document.getElementById('form_order_stop').value);
	var type = document.getElementById('form_order_type').value;
	var customerid = replaceCharsGeneral(document.getElementById('form_order_customerid').value);
	var language = replaceCharsGeneral(document.getElementById('form_order_language').value);
	var cn = replaceCharsGeneral(document.getElementById('form_order_cn').value);
	var address = replaceCharsGeneral(document.getElementById('form_order_address').value);
	var zipcode = replaceCharsGeneral(document.getElementById('form_order_zipcode').value);
	var city = replaceCharsGeneral(document.getElementById('form_order_city').value);
	var tfn = document.getElementById('form_order_tfn').value;
	var mail = replaceCharsGeneral(document.getElementById('form_order_mail').value);
	var copy = false;
	if(document.getElementById("form_order_copy").checked)
		copy = true;
	
	// ------  Check validity of input --------- //
	if(datum.trim() == "") {
		alert("Du måste ange ett datum!");
		return 0;
	}
	
	if(!validChars(start) || start.trim() == "") {
		alert("Du måste ange en korrekt starttid. T.ex. 10:30");
		return 0;
	}
	
	if(!validChars(stop) || stop.trim() == "") {
		alert("Du måste ange en korrekt slutttid. T.ex. 11:30");
		return 0;
	}
	
	if(language.trim() == "") {
		alert("Du måste ange ett språk!");
		return 0;
	}
	
	if(cn.trim() == "") {
		alert("Du måste ange ditt namn!");
		return 0;
	}
	
	if((type == "1" || type == "3") && address.trim() == "") {
		alert("Du måste ange en Adress när du valt kontakttolkning!");
		return 0;
	}
	
	if((type == "1" || type == "3") && zipcode.trim() == "") {
		alert("Du måste ange ett Postnr när du valt kontakttolkning!");
		return 0;
	}
	
	if((type == "1" || type == "3") && city.trim() == "") {
		alert("Du måste ange en Ort när du valt kontakttolkning!");
		return 0;
	}
	
	if(mail.trim() == "" && tfn.trim() == "") {
		alert("Du måste ange antingen ett telefonnummer eller en e-postadress!");
		return 0;
	}
	
	if(copy && mail.trim() == "") {
		alert("Du har angivit att du vill ha en kopia på din beställing men ej angivit en e-postadress!");
		return 0;
	}
	
	if(mail.trim() != "" && !validateEmail(mail)) {
		alert("Kontrollera e-postadressen!");
		return 0;
	}
	
	if(tfn.trim() != "" && !ValidPhoneNum(replaceCharsTfn(tfn),7)) {
		alert("Kontrollera det telfonnummer du angivit! Du kan endast använda dig av siffror, - och +. Telefonnumret bör vara mellan 7 till 15 tecken långt");
		return 0;
	}
	
	// ------  Create xml doc for post --------- //
	var doc = xml.createXMLDocument();
	xml.appendElement(doc.documentElement, "datum", datum);
	xml.appendElement(doc.documentElement, "start", start);
	xml.appendElement(doc.documentElement, "stop", stop);
	xml.appendElement(doc.documentElement, "type", type);
	xml.appendElement(doc.documentElement, "customerid", customerid);
	xml.appendElement(doc.documentElement, "language", language);
	xml.appendElement(doc.documentElement, "cn", cn);
	xml.appendElement(doc.documentElement, "address", address);
	xml.appendElement(doc.documentElement, "zipcode", zipcode);
	xml.appendElement(doc.documentElement, "city", city);
	xml.appendElement(doc.documentElement, "mail", mail);
	xml.appendElement(doc.documentElement, "tfn", tfn);
	xml.appendElement(doc.documentElement, "copy", copy);
	
	// ------ Post --------- //
	var result = xml._download("order_save.jsp", doc, false);
	if(result != "success")
		alert(result);
	else {
		document.getElementById('right_new').style.display = "none";
		document.getElementById('right_result').style.display = "block";
	} 
}

function newOrder() {
	document.getElementById('right_new').style.display = "block";
	document.getElementById('right_result').style.display = "none"; 
}

function newMsg() {
	document.getElementById('contact_email').style.display = "block";
	// ------ Clear form --------- //
	document.getElementById('form_contact_name').value = "";
	document.getElementById('form_contact_subject').value = "";
	document.getElementById('form_contact_email').value = "";
	document.getElementById('form_contact_text').value = "";
	document.getElementById('form_contact_copy').checked = false;
	document.getElementById('contact_email_result').style.display = "none"; 
}
