﻿/**
 * General functions for forms
 *
/* Displays the error alert popup */
function displayError(errmsg, errorfield) {
	var div = document.getElementById("formalert");
	var subdiv = document.getElementById("subdiv");
	if(div == null) {
		div = document.createElement("DIV");
		div.id = "formalert";
		subdiv = document.createElement("DIV");
		subdiv.id = "subdiv";
		div.appendChild(subdiv);
		document.body.appendChild(div);
	}
	subdiv.innerHTML=errmsg;
	div.style.display="block";
	
	if(errorfield != undefined) {
		var field = document.getElementsByName(errorfield)[0];
		// align popup top to specified input element
		div.style.top = (getOffsetTop(field) - 25) + "px";
		// align to column2 in document
		var col2 = document.getElementById("col2");
		div.style.left = (getOffsetLeft(col2) -40) + "px";
		// Set focus to specified element and select if it's a textfield
		field.focus();
		if(field.type=="text")
			field.select();
	}
}
/* Caluclates absolute position of a relative postition */
function getOffsetTop(el) {
	var y = el.offsetTop;
	if (el.offsetParent != null) 
		y += getOffsetTop(el.offsetParent);
	return y;
}
function getOffsetLeft(el) {
	var x = el.offsetLeft;
	if (el.offsetParent != null) 
		x += getOffsetLeft(el.offsetParent);
	return x;
}
/* returns window size */
function getInnerWidth() {
  if( typeof( window.innerWidth ) == 'number' )
    return window.innerWidth;
  else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) 
    return document.documentElement.clientWidth;
  else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
    return document.body.clientWidth;
}
function getInnerHeight() {
  if( typeof( window.innerWidth ) == 'number' )
    return window.innerHeight;
  else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) 
    return document.documentElement.clientHeight;
  else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
    return document.body.clientHeight;
}
function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}
/* Process ajax response */
// Example:
// 	This is a response for a success operation
//	<xml version="1.0" encoding="ISO-8859-1">
//	<response>
//		<action success="true" redirectUrl="salutorg-lagg-in-annons-formular.html" />
//	</response>
//	This is a response for a non successful operation
//	<xml version="1.0" encoding="ISO-8859-1">
//	<response>
//		<action success="false" errorfield="email">
//		Du har angett en felaktig E-postadress. Var god och kontrollera din E-post.
//		</action>
//	</response>
function processAjaxResponse(object) {
	var doc = object.responseXML;
	var resultNode = doc.getElementsByTagName('action')[0];     
	var success = resultNode.getAttribute("success");
	var redirectUrl = resultNode.getAttribute("redirectUrl");
	var errormessage = "";
	if(resultNode.lastChild != undefined )
		errormessage = resultNode.lastChild.nodeValue;
	var errorfield = resultNode.getAttribute("errorfield");
	
	if(success == "false")
		displayError( errormessage, errorfield );
	else if(redirectUrl != null)
		document.location=redirectUrl;
}



/**
 * Apply for membership page functions
 */
/* Selects radio button when clicking the image map */
function selectRegion(region) {
	objRadio = document.getElementById(region);
	objRadio.checked=true;
	//displayError("Du har angett en felaktig E-postadress. Var god och kontrollera angiven E-post.", "Epost" );
}
/* Called when user clicks send in member application */
function sendMemberForm() {
	var objForm = document.getElementById("memberform");
	YAHOO.util.Connect.setForm(objForm.id);
	YAHOO.util.Connect.asyncRequest(objForm.method,objForm.action, { success:responseSuccess_sendMemberForm, failure:responseFailure_sendMemberForm  });
	return false;
}
var responseSuccess_sendMemberForm = function(o) {
	processAjaxResponse(o);
}
var responseFailure_sendMemberForm = function(o) {
	displayError("Din anm&auml;lan kunde inte skickas. F&ouml;rs&ouml;k igen senare eller kontakta <a href='mailto:webmaster@ifboat.com'>Webmaster</a>", "Action" );
}


/**
 * Update member adress functions
 */
function verifyAddress() {
	// Verify ad type and email
	var objForm = document.getElementById("verifyaddress");
	YAHOO.util.Connect.setForm(objForm.id);
	YAHOO.util.Connect.asyncRequest(objForm.method,objForm.action, { success:responseSuccess_verifyAddress, failure:responseFailure_verifyAddress  });
	return false;
}
var responseSuccess_verifyAddress = function(o) {
	// Process default validation and redirection
	processAjaxResponse(o);
	
	// Do additional processing
	var doc = o.responseXML;
	var resultNode = doc.getElementsByTagName('action')[0];  
	var memberfound = resultNode.getAttribute("memberfound");
	
	if(memberfound != "true")
		return;
	// Populate memberform with data from xml response and post it.
	var node, nodedata, forminput;
	var keys = new Array("region", "firstname", "lastname", "adress", "zipcode", "city", "phone", "cellphone", "email", "sailnr", "boatname", "hullcolor", "message", "cruising", "fleetsailing", "racing", "crewing", "courses", "advices" );
	for (var x in keys) {
		node = doc.getElementsByTagName(keys[x])[0];
		if(node.lastChild != undefined )
			nodedata = node.lastChild.nodeValue;
		else
			nodedata = "";
		forminput = document.getElementsByName(keys[x])[0];
		forminput.value = nodedata;
	}
	var objForm = document.getElementById("verifyaddress-data");
	objForm.submit();
	return false;		
}
var responseFailure_verifyAddress = function(o) {
	displayError("Fel, f&ouml;rs&ouml;k igen senare eller kontakta <a href='mailto:webmaster@ifboat.com'>Webmaster</a>", "Action" );
}

function sendAddress() {
	// Verify ad type and email
	var objForm = document.getElementById("updateaddressform");
	YAHOO.util.Connect.setForm(objForm.id);
	YAHOO.util.Connect.asyncRequest(objForm.method,objForm.action, { success:responseSuccess_sendAddress, failure:responseFailure_sendAddress  });
	return false;
}
var responseSuccess_sendAddress = function(o) {
	// Process default validation and redirection
	processAjaxResponse(o);
}
var responseFailure_sendAddress = function(o) {
	displayError("Fel, f&ouml;rs&ouml;k igen senare eller kontakta <a href='mailto:webmaster@ifboat.com'>Webmaster</a>", "Action" );
}

/**
 * Insert new ad functions
 */
function verifyNewAd() {
	// Verify ad type and email
	var objForm = document.getElementById("verifynewad");
	YAHOO.util.Connect.setForm(objForm.id);
	YAHOO.util.Connect.asyncRequest(objForm.method,objForm.action, { success:responseSuccess_verifyNewAd, failure:responseFailure_verifyNewAd  });
	return false;
}
var responseSuccess_verifyNewAd = function(o) {
	processAjaxResponse(o);
}
var responseFailure_verifyNewAd = function(o) {
	displayError("Fel, f&ouml;rs&ouml;k igen senare eller kontakta <a href='mailto:webmaster@ifboat.com'>Webmaster</a>", "Action" );
}


/**
 * Save ad functions
 */
/* Check email and ad number before displaying update form */
function verifyAdNr() {
	// Verify ad nr adn email
	var objForm = document.getElementById("verifyad");
	YAHOO.util.Connect.setForm(objForm.id);
	YAHOO.util.Connect.asyncRequest(objForm.method,objForm.action, { success:responseSuccess_verifyAd, failure:responseFailure_verifyAd  });
	return false;
}
var responseSuccess_verifyAd = function(o) {
	processAjaxResponse(o);
}
var responseFailure_verifyAd = function(o) {
	displayError("Din annons kunde inte hittas.\nF&ouml;rs&ouml;k igen eller kontakta <a href='mailto:webmaster@ifboat.com'>Webmaster</a>", "Action" );
}
function saveAd() {
	// Insert ad in database
	var objForm = document.getElementById("savead");
	YAHOO.util.Connect.setForm(objForm.id);
	YAHOO.util.Connect.asyncRequest(objForm.method,objForm.action, { success:responseSuccess_saveAd, failure:responseFailure_saveAd  });
	return false;
}
var responseSuccess_saveAd = function(o) {
	processAjaxResponse(o);
}
var responseFailure_saveAd = function(o) {
	displayError("Din annons kunde inte sparas.\nF&ouml;rs&ouml;k igen senare eller kontakta <a href='mailto:webmaster@ifboat.com'>Webmaster</a>", "Action" );
}


/**
 * Delete ad functions
 */
function deleteAd(uri) {
	if( confirm("Är du säker på att du vill ta bort annonsen?") ) {
		var request = YAHOO.util.Connect.asyncRequest('GET', uri, { success:responseSuccess_deleteAd, failure:responseFailure_deleteAd  });   
	}
}
var responseSuccess_deleteAd = function(o) {
processAjaxResponse(o);
}
var responseFailure_deleteAd = function(o) {
	displayError("Annonsen kunde inte tas bort.\nF&ouml;rs&ouml;k igen senare eller kontakta <a href='mailto:webmaster@ifboat.com'>Webmaster</a>", "Action" );
}


/**
 * Delete uploaded images functions
 */
function deleteImage(objLink) {
	// Delete image from server
	var uri = objLink.href;
	var request = YAHOO.util.Connect.asyncRequest('GET', uri, { success:responseSuccess_deleteImage, failure:responseFailure_deleteImage  });   
	// Remove image in page
	var div = objLink.parentNode;
	div.parentNode.removeChild(div);
	// Check if there are no images in table cell
	var obj = document.getElementById("uploadedimages");
	var cell = obj.getElementsByTagName("td")[0];
	if(cell.getElementsByTagName("div").length == 0) {
		// Hide upladed images row in table
		obj = document.getElementById("uploadedimages");
		obj.style.display="none";
	}
	return false;
}
var responseSuccess_deleteImage = function(o) {
}
var responseFailure_deleteImage = function(o) {
}


/**
 * Functions for uploading images in update ad page
 */
var uploadImageTimeoutID;
function uploadImage(objInput) {
	// Check how many images that are uploaded
	var obj = document.getElementById("uploadedimages");
	var cell = obj.getElementsByTagName("td")[0];
	if(cell.getElementsByTagName("div").length >= 4) {
		// Disable file upload
		var obj = document.getElementById("imageupload");
		ClearFileInput(obj);
		displayError( "Du kan inte ladda upp fler än fyra bilder.", "imageFile" );
		return false;
	}

	// Hide file upload form again
	var obj = document.getElementById("imageupload");
	obj.style.display="none";
	
	// Display file upload progress
	var obj = document.getElementById("imageuploadprogress");
	obj.style.display="block";
	
	// Upload image
	var objForm = document.getElementById("imageupload");
	YAHOO.util.Connect.setForm(objForm.id , true);
	YAHOO.util.Connect.asyncRequest("POST",objForm.action, { upload:responseUpload_uploadImage });
	uploadImageTimeoutID = setTimeout("timeout_uploadImage();",30000);
	return false;
}
function timeout_uploadImage() {
	// Display file upload form again
	var obj = document.getElementById("imageupload");
	obj.style.display="block";
	ClearFileInput(obj);
	
	// Hide file upload progress
	var obj = document.getElementById("imageuploadprogress");
	obj.style.display="none";
	displayError("Bilduppladdningen tog för lång tid. Det kan bero på att bilden du försöker ladda upp har en väldigt stor filstorlek.\nKontrollera att bilden du laddar upp inte har en filstorlek som är större än 1024 kB. Om det inte går ändå, kontakta <a href='mailto:webmaster@ifboat.com'>Webmaster</a>", "imageFile");
}
var responseUpload_uploadImage = function(o) {
	var success;
	var errormessage;
	var file;
	var deletepath;
	
	// Stop timer
	clearTimeout(uploadImageTimeoutID);	
	var doc = o.responseXML;
	var resultNode = doc.getElementsByTagName('action')[0];     
	if(resultNode != undefined) {
		success = resultNode.getAttribute("success");
		file = resultNode.getAttribute("file");
		deletepath = resultNode.getAttribute("deletepath");
		if(success!="true") {
			errormessage = resultNode.lastChild.nodeValue;
		}
	} else {
		// Error when uploading file
		success = "false";
		errormessage = "Uppladdningen misslyckades. Kontrollera att filen du försöker ladda upp är en Jpg bild och inte är större än 1024 kB. Om det inte går ändå, kontakta <a href='mailto:webmaster@ifboat.com'>Webmaster</a>";
	}
	//alert(file);
	
	// Display file upload form again
	var obj = document.getElementById("imageupload");
	obj.style.display="block";
	ClearFileInput(obj);
	
	// Hide file upload progress
	var obj = document.getElementById("imageuploadprogress");
	obj.style.display="none";
	
	// Add uploaded image to table cell
	if(success == "true") {
		// Display upladed images row in table
		var displayStyle="table-row";
		/*@cc_on
			// If ie set style to block
			displayStyle="block";
		@*/
		obj = document.getElementById("uploadedimages");
		obj.style.display=displayStyle;
		
		// Get table cell
		obj = document.getElementById("uploadedimages");
		var cell = obj.getElementsByTagName("td")[0];
		// Create new image div
		var div = document.createElement("DIV");
		//div.id = "uploadedImage1";
		div.className = "adimage";
		var html =	"<img src='" + file + "' alt='' />\n";
		html +=	"<a class='imgDelete' href='" + deletepath + "' onclick='return deleteImage(this)'>Ta bort bild</a>\n";
		html +=	"<input type='hidden' name='uploadedImage1' value='" + file + "' />\n";
		div.innerHTML = html;
		cell.appendChild(div);
	} else {
		// Error occured
		displayError( errormessage , "imageFile" );
	}
}
function ClearFileInput(objForm) {
	// This method clears the input value field so that the user can upload the same file again
	objForm.innerHTML = objForm.innerHTML + " ";
}


/**
 * User select new adtype in (salutorget) ad listing page
 */
function selectAdType(objSelect) {
	objForm = document.getElementById("formsalutorg");
	objForm.submit();
	return false;
}

/**
 * Functions for popup with image archive and contact form
 */
function infoOpen(objLink, centerWindow, popupClass) {
    var uri;
    if(objLink.href != undefined)
	uri = objLink.href;
    else
	uri = objLink;
    if(centerWindow == undefined)
	centerWindow = true;	// Default value
    if(popupClass == undefined)
	popupClass = "";	// Default value
    var request = YAHOO.util.Connect.asyncRequest('GET', uri, { success:responseSuccess_infoOpen, failure:responseFailure_infoOpen , argument: { center:centerWindow, classname:popupClass }  }); 
    return false;
}
var responseSuccess_infoOpen = function(o) {
	var div = document.getElementById("popup");
	var divcontainer = document.getElementById("popupcontainer");
	if(div == null) {
		// Create extra div for alphaloader bug in IE6
		divcontainer = document.createElement("DIV");
		divcontainer.id = "popupcontainer";
		div = document.createElement("DIV");
		div.id = "popup";
		divcontainer.appendChild(div);
		document.body.appendChild(divcontainer);
	}
	div.innerHTML=o.responseText;
	div.className=o.argument.classname;

	if(o.argument.center == true) {
		var x, y;
		if(o.argument.classname == "large") {
			x = (getInnerWidth() - 883) /2 - 12;
			y = (getInnerHeight() - 585) /2 ;
		} else if(o.argument.classname == "edit") {
			x = (getInnerWidth() - 575) /2 - 12;
			y = 40 ;
		} else {
			x = (getInnerWidth() - 630) /2 - 12;
			y = (getInnerHeight() - 450) /2 ;
		}
		if(x < 20)
			x=20;
		if(y < 20)
			y=20;
		y = y + getScrollXY()[1];
		divcontainer.style.top=y+ "px";
		divcontainer.style.left=x +"px";
	}
	// If were on IE's and on salutorget page hide select box because its alwasy on top of all layers
	if (window.XMLHttpRequest)
		usingIE6 = false;
	else
		usingIE6 = true;
	var adtypeselect = document.getElementById("adtype");
	if ( usingIE6 && adtypeselect != null ) {
		adtypeselect.style.visibility="hidden";
	}
	divcontainer.style.display="block";
}
var responseFailure_infoOpen = function(o) {
}
function infoClose() {
	var div = document.getElementById("popupcontainer");
	// If were on IE's and on salutorget page show select box again ( because its alwasy on top of all layers)
	if (window.XMLHttpRequest)
		usingIE6 = false;
	else
		usingIE6 = true;
	var adtypeselect = document.getElementById("adtype");
	if ( usingIE6 && adtypeselect != null ) {
		adtypeselect.style.visibility="visible";
	}
	if(div != null)
		div.style.display="none";
}
function infoPost(objForm) {
	YAHOO.util.Connect.setForm(objForm.id);
	YAHOO.util.Connect.asyncRequest(objForm.method,objForm.action, { success:responseSuccess_infoPost, failure:responseFailure_infoPost  });
	return false;
}
var responseSuccess_infoPost = function(o) {
	var doc = o.responseXML;
	var resultNode = doc.getElementsByTagName('action')[0];     
	var success = resultNode.getAttribute("success");
	var errormessage = "";
	if(resultNode.lastChild != undefined )
		errormessage = resultNode.lastChild.nodeValue;
	var errorfield = resultNode.getAttribute("errorfield");
	
	if(success == "false") {
		var message = document.getElementById("alertmesssage");
		var popup  = document.getElementById("popup");
		if(message != null) {
			popup.className="small alert";
			message.style.display="block";
			message.innerHTML = "" + errormessage;
			if(errorfield != null && errorfield != "") {
				var field = document.getElementsByName(errorfield)[0];
				field.focus();
				if(field.type=="text")
					field.select();
			}
		}
	} else {
		infoClose();
	}
}
var responseFailure_infoPost = function(o)
{
	var message = document.getElementById("alertmesssage");
	var popup  = document.getElementById("popup");
	if(message != null) {
		popup.className="small alert";
		message.style.display="block";
		message.innerHTML = "Ditt meddelande kunde inte skickas.\nF&ouml;rs&ouml;k igen senare eller kontakta <a href='mailto:webmaster@ifboat.com'>Webmaster</a>";
	}
}
function infoHtmlPost(objForm) {
	YAHOO.util.Connect.setForm(objForm.id);
	YAHOO.util.Connect.asyncRequest(objForm.method,objForm.action, { success:responseSuccess_infoHtmlPost, failure:responseFailure_infoHtmlPost  });
	return false;
}
var responseSuccess_infoHtmlPost = function(o) {
	var div = document.getElementById("popup");
	div.innerHTML=o.responseText;
}
var responseFailure_infoHtmlPost = function(o)
{
	alert("Ditt meddelande kunde inte skickas.\nFörsök igen senare eller kontakta webmaster@ifboat.com.");
}



/**
 * Functions for popup with image archive
 */
function getImage(objLink, imageIndex) {
	var uri = objLink.href; // + "?rnd=" + Math.floor(Math.random()*500000);
	var request = YAHOO.util.Connect.asyncRequest('GET', uri, { success:responseSuccess_getImage, failure:responseFailure_getImage , argument: { index:imageIndex } } );   
	return false;
}
var responseSuccess_getImage = function(o) {
	// Set image html
	var imgTD = document.getElementById("currentimg");
	imgTD.innerHTML=o.responseText;
	// Upade selected Image Id in image list
	var listA = document.getElementById("imglist").getElementsByTagName("a");
	if(listA.length <= 1)
		return;
	for( i=0; i < listA.length; i++ ) {
		listA[i].id="";
	}
	listA[o.argument.index].id="selectedimage";
}
var responseFailure_getImage = function(o) {
	alert("Fel kunde inte läsa in bild. (" + o.status  + ", " + o.statusText + ")"); 
}

/**
 * User clicked search site button 
 */
function searchSite() {
	var objForm = document.getElementById("searchform");
	var searchInput = document.getElementById("search-input");
	if(searchInput.value == "Sök artikel, Medvind, inlägg...") {
		searchInput.value = "";
	}
	objForm.submit();
	return false; // To avoid default submit in Firefox and Safari
}

/**
 * User show sailnr help button
 */
function showPlate() {
	var div = document.getElementById("plat");
	x = (getInnerWidth() - 560) /2 - 12 + 150;
	var field = document.getElementsByName("Segelnr")[0];
	// align popup top to specified input element
	div.style.top = (getOffsetTop(field) - 75) + "px";
	div.style.left=x +"px";
	div.style.display="block";
}
function hidePlate() {
	var div = document.getElementById("plat");
	div.style.display="none";
}

