/*
* Copyright © www.bruidssuiker.nl
* Design by Xardeau.com
*/

/**
* Global Variables
*/
var fadingIn = false;
var fadingOut = false;
var fadeEndValue;
var fadeEndStartValue;
var mediaBaseId;
var mediaContentId;
var mediaImageContainerId;
var offerList = new Array();
var emptyElemId = '_empty_';
var newElemId = '_new_';
var strDeleteArticle = 'deleteArticle';

function init_page(aMediaBaseId, aMediaContentId, aMediaImageContainerId){
	mediaBaseId = aMediaBaseId;
	mediaContentId = aMediaContentId;
	mediaImageContainerId = aMediaImageContainerId;
	
	initRHS();	
}
function showImage(imgId){
	var imgElem = getElement(imgId);
	var path = imgElem.src;
	
	showImageWithUrl(imgId, path);
}
function showImageWithUrl(imgId, imageUrl){
	var imgContainerElem = getElement(mediaImageContainerId);
	imgContainerElem.src = imageUrl;
	
	var titleElem = getElement('media_watermark');
	titleElem.innerHTML = 'Bruidssuiker.nl - ' + imgId.substring(4,imgId.length); 
	showDivFade(mediaBaseId, true, 75, 500);
	showDivFade(mediaContentId, true, 100, 400);
}
function showPopup(contentToShowId){
	var contentElem = getElement(contentToShowId);
	showDivFade('popup_background', true, 75, 500);
	showDivFade('popup_div', true, 100, 400);
	var innercontentElem = getElement('popup_innercontent');
	innercontentElem.innerHTML = contentElem.innerHTML;
}
/**
* Show a Div
*/
function showDiv(elemId){
	var elem = getElement(elemId);
	elem.style.visibility = 'visible';
}
/**
* ShowDiv shows a div
*/
function showDivFade(elementId, fadein, opacitymax, time_ms){
	var divElement = getElement(elementId);
	if(fadein){
		//Set transparancy 100%
		setOpacity(0, elementId);
		fade(elementId, 0, opacitymax, time_ms, 0);
	}
	divElement.style.display = 'block';

}
/**
* Hide a Div
*/
function hideDiv(elemId){
	var elem = getElement(elemId);
	//fadeOut(elemId);
	elem.style.visibility = 'hidden';
}
/**
* HideDiv shows a div
*/
function hideDivFade(elementId, fadeout, opacitymax, time_ms){
	var divElement = getElement(elementId);
	if(fadeout){
		fade(elementId, opacitymax, 0, time_ms, 0);
	}
	setTimeout("setDisplayNone('"+ elementId +"')", time_ms+100);
}

function setDisplayNone(elementId){
	getElement(elementId).style.display = 'none';
}
/**
*  fadeIn elements from 0 .. 100%
*/
function fadeIn(element, endcolor){
	if(!fadingIn){
		fadingIn = true;
		setOpacity(0, element);
		fade(element, 30, 100, 1000, 0);
	}
}
/**
*  fadeIn elements from 100 .. 0%
*/
function fadeOut(element, endcolor){
	if(!fadingOut){
		fadingOut = true;
		setOpacity(100, element);
		fade(element, 100, 30, 500, 0);
	}
}

/**
* Get an HTML Element by its Id.
*/
function getElement(elementId){
	return document.getElementById(elementId);
}

/**
* Fade in/out function
*/
function fade(id, opacStart, opacEnd, millisec, delay) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

	if(delay && delay > 0){
		for(var i=0; i < 100; i++) {
			setTimeout("setOpacity(0,'" + id + "')",(timer * speed));
			timer++;
		}
	}
	timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
		fadeEndStartValue = opacStart;
        for(var i=opacStart; i >= opacEnd; i--) {
            setTimeout("setOpacity(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
		fadeEndValue = opacEnd;
        for(var i=opacStart; i <= opacEnd; i++)
            {
            setTimeout("setOpacity(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

/**
* change the opacity for different browsers
*/
function setOpacity(opacity, id) {
	if(fadeEndValue == opacity){
		fadingIn = false;
	}
	if(fadeEndStartValue == opacity){
		fadingOut = false;
	}
	
	var object;
	if(typeof id == 'string'){
		object = getElement(id).style;
	}else{
		object = id.style;
	}
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
} 

function initRHS() {
	if(getElement('movable_rhs')){
		/*setmovable_rhsOffser.initialPos = getStyle('movable_rhs','top');*/
		setmovable_rhsOffser.initialPos = getCalculatedProperty('movable_rhs','top');
		window.onscroll = document.documentElement.onscroll = setmovable_rhsOffser;
		setmovable_rhsOffser();
	}
}
function getStyle(el,styleProp) {
	var x = document.getElementById(el);
	if (x && x.currentStyle) var y = x.currentStyle[styleProp];
	else if (window.getComputedStyle) var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
	return y;
}

function setmovable_rhsOffser() { 
	var movableRhs = getElement('movable_rhs');
	if (!movableRhs) return;
	
	//Check where if the selected element is still on screen and not scrolled away
	var currentOffset = document.documentElement.scrollTop || document.body.scrollTop; // body for Safari
	var div_selected = getElement('content_text');
	var is_hidden = false;
	var newOffset = 0;
	if(div_selected){
		var coord = findPos(div_selected);
		if(coord[1]<currentOffset){
			is_hidden = true;
			newOffset = currentOffset - coord[1];
		}
	}
	//Check what the start position is and calculate the offset to add
	var desiredOffset = newOffset + 5;
	if (desiredOffset < 10) desiredOffset = 0;
	
	//Check if the offsetcontainer is not crossing the (parent)containers border
	var overflow = false;
	if(div_selected.offsetHeight - movableRhs.offsetHeight <= desiredOffset + 2){
		overflow = true;
	}

	//If the selected item is visible and the container not on its maximum bottom position, add the offset to the offset_container.
	if (desiredOffset != parseInt(movableRhs.style.top) && is_hidden && !overflow){
		movableRhs.style.top = desiredOffset + 'px';
	}else if(desiredOffset != parseInt(movableRhs.style.top) && !is_hidden){
		movableRhs.style.top = '0px';
	}else if (desiredOffset != parseInt(movableRhs.style.top) && is_hidden && overflow){
		movableRhs.style.top = (div_selected.offsetHeight - movableRhs.offsetHeight - 5) + 'px';
	}
}
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj && obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	return [curleft,curtop];
}
function addToList(elemId, forwardTo){
	var inputElem = getElement(elemId);
	var aNumber = parseInt(inputElem.value); 
	if(isNaN(aNumber) || aNumber <= 0){
		addArticleToBasket(elemId, 1, forwardTo);
	}else{
		addArticleToBasket(elemId, aNumber, forwardTo);
	}
	inputElem.value = '';
}
function showArticle(elemId, doShow){
	var articleElem = getElement(elemId);
	if(doShow){
		articleElem.style.display = '';
	}else{
		articleElem.style.display = 'none';
	}
}
function deleteArticleFromBasket(articleID, forwardTo){
	var action = 'action=delete&';
	var articleId = 'articleID=' + articleID;
	
	xmlhttpPost(action + articleId, forwardTo);
}

function deleteArticleFromView(articleID, forwardTo){
	var action = 'action=delete&';
	var articleId = 'articleID=' + articleID;
	xmlhttpPost(action + articleId, forwardTo);
}
function deleteArticleObject(url){
	if(confirm('Are you sure you want to permanently delete this article?')){
		document.location = url;
	}
	
}
function deleteArticle(linkElem, listId){
	var i = linkElem.parentNode.parentNode.rowIndex;
	if(i){
		document.getElementById(listId).deleteRow(i);
	}
	if(getElement(listId).getElementsByTagName('tr').length == 3 ){
		showArticle(emptyElemId, true);
		getElement('buttonFinished').className = 'button hidden';
	}
}
function addArticleToBasket(articleID, aNumber, forwardTo){
	var action = 'action=add&';
	var number = 'number=' + aNumber + '&';
	var articleId = 'articleID=' + articleID;
	
	xmlhttpPost(action + number + articleId, forwardTo);
	
}
function addArticle(articleId, numberOf, listId){
	var anArticle = new Array(2);
	var table = getElement(listId);
	if(table.getElementsByTagName('tr').length == 3 ){
		showArticle(emptyElemId, false);
		getElement('buttonFinished').className = 'button';
	}
	
	var found = false;
	var trElems = table.getElementsByTagName('tr');
	for(var i=0;i<trElems.length && !found;i++){
		var aRowId = trElems[i].id;
		if(aRowId == articleId){
			found = true;
			var childTDs = trElems[i].getElementsByTagName('td');
			childTDs[1].innerHTML = numberOf + parseInt(childTDs[1].innerHTML);
		}
	}
	
	if(!found){
		var imageUrl = getElement('img_' + articleId).src;
		var trElem = getElement(newElemId).cloneNode(true);
		trElem.id = articleId;
		
		var childTDs = trElem.getElementsByTagName('td');
		childTDs[0].childNodes[0].innerHTML = articleId;
		childTDs[0].childNodes[0].onclick = function(){showImageWithUrl('img_' + articleId, imageUrl)};
		childTDs[1].innerHTML = numberOf;
		
		var table = getElement(listId);
		getElement(newElemId).parentNode.appendChild(trElem);
	}
}
function enableOfferPrice(parentElement, elementId){
	var isChecked = parentElement.checked;
	var element = getElement(elementId);
	var classDisabled = ' disabled';
	if(isChecked){
		element.disabled = false;
		element.className = element.className.substring(0,element.className.indexOf(classDisabled)); 		
	}else{
		element.disabled = true;
		element.className += classDisabled; 
		setInvalid(element, false);
		element.value ='';
	}
}

function isValidArticle(){
	var validationMsg = "";
	
	if(isEmpty(getElement('art_number'))){
		validationMsg += "Artikel ID \n";
		setInvalid(getElement('art_number'), true);
	}else{
		setInvalid(getElement('art_number'), false);
	}
		
	if(isEmpty(getElement('art_description'))){
		setInvalid(getElement('art_description'), true);
		validationMsg += "Artikel ID \n";
	}else{
		setInvalid(getElement('art_description'), false);
	}
	
	var strPrice = getElement('art_price').value;
	var strOffer = getElement('art_offerprice').value;
	var isoffer = getElement('art_isoffer').checked;
	
	try{
		var price = strPrice.replace(",",".") * 1;
		if(!(price > 0)){
			validationMsg += "Prijs \n";
			setInvalid(getElement('art_price'), true);
		}else{
			setInvalid(getElement('art_price'), false);
		}
	}catch(err){
		setInvalid(getElement('art_price'), true);
		validationMsg += "Prijs \n";
	}
	
	if(isoffer){
		try{
			var offerPrice = strOffer.replace(",",".") * 1;
			if(!(offerPrice > 0)){
				validationMsg += "Aanbiedingsprijs \n";
				setInvalid(getElement('art_offerprice'), true);
			}else{
				setInvalid(getElement('art_offerprice'), false);
			}
		}catch(err){
			validationMsg += "Aanbiedingsprijs \n";
			setInvalid(getElement('art_offerprice'), true);
		}
	}
	
	if(validationMsg.length == 0){
		getElement('art_price').value = price;
		getElement('art_offerprice').value = offerPrice;
		return true;
	}else{
		return false;
	}
}

function saveArticle(doSaveElementId, formName){
	var element = getElement(doSaveElementId);
	element.value = true;
	
	if(isValidArticle()){
		document.forms[formName].submit();
	}
}
function showPicture(doSaveElementId, formName){
	var element = getElement(doSaveElementId);
	
	element.value = '';
	document.forms[formName].submit();
}
function xmlhttpPost(articleInfo, forwardTo) {
	var strUrl = 'includes/basket.php?';
    var xmlHttpReq = false;
    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open('POST', strUrl + articleInfo, true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            updatepage(self.xmlHttpReq.responseText, forwardTo);
        }
    }
    self.xmlHttpReq.send(articleInfo);
}

function getquerystring() {
    var form     = document.forms['f1'];
    var word = form.word.value;
    qstr = 'w=' + escape(word);  // NOTE: no '?' before querystring
    return qstr;
}

function updatepage(str, forwardTo){
	if(document.getElementById("offerListContainer")){
		document.getElementById("offerListContainer").innerHTML = str;
	}
	if(forwardTo){
		document.location = forwardTo;
	}
}
