/* JavaScript File Area Digital										*/
/* functions.js 													*/
/* Modified February 18th 2009							 			*/
/* http://www.areadigital.org/ 									    */


// ------------------------------------------ Google - Jumps to right page in the google navigator ------------------------------------------------------------

function google(target,selected,restore){
  
  eval(target+".location='"+selected.options[selected.selectedIndex].value+"'");
  if (restore) selected.selectedIndex=0;
  
}


// ---------------------------------------------------- Openwin - Opens a popup window ------------------------------------------------------------------------

function openwin(theURL,winName,features) {
	
  window.open(theURL,winName,features);
  
}

// --------------------------------------------------------- showmap - swaps layers ----------------------------------------------------------------------

var currentmap = [];

function swapmap() {
		
	if (currentmap.length > 0) hidelayer(currentmap);
	
	currentmap.length = 0;
	
	for(var i = 0; i < arguments.length; i++) {
		
		showlayer(arguments[i]);
		currentmap.push(arguments[i]);
	}
}

// --------------------------------------------------------- swaplayers - swaps layers ----------------------------------------------------------------------

var currentlayer = [];

function swaplayers() {
			
	if (currentlayer.length > 0) hidelayer(currentlayer);
	
	currentlayer.length = 0;
	
	for(var i = 0; i < arguments.length; i++) {
		
		showlayer(arguments[i]);
		currentlayer.push(arguments[i]);
	}
}

// --------------------------------------------------------- swapevent - swaps layers ----------------------------------------------------------------------

var currentevent;
var currentbox;

function swapevent(id, parent) {
	
	if (currentevent) {
				
		var layer = getelement(currentevent);
		if (layer && layer.css) {
			layer.css.visibility = "hidden";
			layer.css.display = "none";
		}
	}
	if (currentbox) {
		
		var box = getelement(currentbox);
		if (box && box.css) {
			box.className = box.className.replace(' open', '');
		}
	}
	
	var layer = getelement(id);
	var box = getelement(parent);
	currentevent = id;
	currentbox = parent;
	
	if (layer && layer.css) {
			layer.css.visibility = "visible";
			layer.css.display = "block";
			layer.focus();
	}	
	if (box && box.css) box.className += ' open';
}


// ------------------------------------------------------ showlayer - shows a hidden layer ------------------------------------------------------------------

function showlayer(id) {
	
	var layer = getelement(id);
	
	if (layer && layer.css) {
		
		layer.css.visibility = "visible";
		layer.css.display = "block";
		layer.focus();
	}
}

// toggle layer
// called like this onclick="toggleLayers('div_id', 'group_id')"
// where div_id is id of the div that was clicked
// where group_id is id of holder div

function toggleLayer(id, obj) {
	
	var obj = document.getElementById(obj);
	var div = document.getElementById(id);
	var els = div.childNodes || div.getElements;
    for(var i = 0, len = els.length; i < len; ++i) {
		if(els[i].nodeType == 1) {
			if(els[i].style.visibility = "visible") {
				els[i].style.visibiliy = "hidden";
				els[i].style.display = "none";
			}
		}
	}

	obj.style.visibility = "visible";
	obj.style.display = "block";
	obj.focus();


}

// ----------------------------------------------------- hidelayer - hides a visible layer ------------------------------------------------------------------

function hidelayer(arr) {
	
	for(var i = 0; i < arr.length; i++) {
		
		var layer = getelement(arr[i]);
	
		if (layer && layer.css) {
			
			layer.css.visibility = "hidden";
			layer.css.display = "none";
		}
	}
}


// ------------------------------------------------------ getelement - finds an element ----------------------------------------------------------------------

function getelement(id) {
	
	var el = (document.getElementById)? document.getElementById(id): (document.all)? document.all[id]: (document.layers)? document.layers[id]: null;
	
	if (el) el.css = (el.style)? el.style: el;
	
	return el;
}


// ----------------------------------------------------- setclass - add a new class name ---------------------------------------------------------------------

function setclass(list, menu) {
	
	var listobject = getelement(list);
	var menuobject = getelement(menu);
	
	for (i=0; i < menuobject.childNodes.length; i++) {
		
		var node = menuobject.childNodes[i];
	
		if (node.nodeName == 'LI') {
			
			node.className = 'idle';
		}
	}
	
	listobject.className = "active";
}

// ------------------------------------------------------------- movelayer - moves a layer ----------------------------------------------------------------------

function movelayer(layer, position) {
	
	var layer = getelement(layer);
	layer.css.top = position + "px";
	
	showlayer('pattern');
}

// ------------------------------------------------------- writeToLayer - write a text to a layer ----------------------------------------------------------------

function writeToLayer(layerID, txt) {

	if(document.getElementById){
		document.getElementById(layerID).innerHTML=txt;
	}
	else if(document.all){
		document.all[layerID].innerHTML=txt;
	}
	else if(document.layers){
		with(document.layers[layerID].document){
			open();
			write(txt);
			close();
		}
	}
}

function makeOpts(obj, strParams) {
	var opts = {};
	$w(strParams).each(function(t) {
		if(!!obj[t]) { opts[t] = obj[t]; }
	});
	return opts;
}

// ------------------------------------------------------- openLightView - open a lightview window ------------------------------------------------------------

// PATH AND ATTRIBUTE ARE REQUIRED!!!

function openLightView(params) {

	if(params.attribute == "image-new") {
		params.attribute = "image";
		var opts2 = makeOpts(params, "heading credit imageurl linkname linkimage");

		document.observe('lightview:opened', function(event) {
			linkImage(opts2);
		});
	}
	else {
		Event.stopObserving(document, 'lightview:opened');
	}

	if(!params.title) { params.title = ""; }
	if(!params.caption) { params.caption= ""; }

	var opts = makeOpts(params, "autosize topclose width height");

	Lightview.show({href:params.path, title:params.title, caption:params.caption, rel:params.attribute, options:opts});
}

function showEcard(url) {
	openLightView({path:url, attribute:'ajax', topclose:true, width:748, height:356});
}

function linkImage(opts) {
	
	var lv = $("lightviewContent").up("div");
	var dims = lv.getDimensions();
	var controlHeight = 50;

	var html = "";
	var bottom = Prototype.Browser.IE ? -1 : 0;
	html += '<div class="lt mask"></div><div class="rt mask"></div>';
	html += '<div class="lb mask" style="top:' + (dims.height - controlHeight - 1) + 'px"></div>';
	html += '<div class="rb mask" style="top:' + (dims.height - controlHeight - 1) + 'px"></div>';
	html += '<div id="controls" style="position:absolute;width:' + dims.width + 'px;bottom:' + bottom + 'px;height:' + (controlHeight - 9) + 'px;background-color:#fff">';
	html += '<div class="box"><div class="one"><h1>' + opts.heading + '</h1>';
	if(!!opts.credit) { html += '<h4>' + opts.credit + '</h4>'; };
	html += '</div>';
	if(!!opts.imageurl && !!opts.linkimage && !!opts.linkname) { html += '<div class="two"><a href="javascript://send e-card" onclick="parent.showEcard(\'' + opts.imageurl + '\')" class="action special">' + opts.linkname + '<img src="' + opts.linkimage + '" alt="' + opts.linkname + '" /></a></div>'; }
	html += '</div></div>';

	var css = "";
	css += 'background-color:transparent;';
	css += 'position:absolute;';
	css += 'top:0px;left:0px;';
	css += 'height:' + dims.height + 'px;';
	css += 'width:' + dims.width + 'px;';

	var div = new Element("div", {style:css}).update(html);
	lv.appendChild(div);
}

// -------------------------------------------------------------------------------------------------------------------------------------------------------------

function trim(s) { return s.replace(/^\s+|\s+$/g, ''); }

function valEmail(email) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   if(reg.test(trim(email)) == false) {
      return false;
   }
   return true;
}

function sendCard() {
	if($F("sub") == "1") { return; }
	$("sub").value = "1";
	var err = false;
	if(trim($F("msg")) == "") {
		err = true;
		$("msgL").setStyle({color:"#e00"});
	}
	else {
		$("msgL").setStyle({color:"#777"});
	}

	if(trim($F("namefrom")) == ""  || $F("namefrom") == "name" || !valEmail($F("emailfrom"))) {
		err = true;
		$("fromL").setStyle({color:"#e00"});
	}
	else {
		$("fromL").setStyle({color:"#777"});
	}

	if(trim($F("nameto")) == "" || $F("nameto") == "name" || !valEmail($F("emailto"))) {
		err = true;
		$("toL").setStyle({color:"#e00"});
	}
	else {
		$("toL").setStyle({color:"#777"});
	}

	if(err) { 
		$("sub").value = 0;
		return;
	}

	Form.Element.disable("SendButton");
	var p = "YourName=" + $F("namefrom") + "&SendButton=1&YourEmail=" + $F("emailfrom") + "&ReceiversName=" + $F("nameto") + "&ReceiversEmail=" + $F("emailto") + "&Comment=" + $F("msg") + "&NodeID=" + $F("NodeID2") + "&copy=" + ($F("copy") == "on" ? 1 : 0);
	
	new Ajax.Request($F("cardUrl"), {method:"post",parameters:encodeURI(p)});
	setTimeout(function() { Lightview.hide(); }, 1500)
	
}

// ----------------------------------------------- makeDoubleDelegate - runs more than one onload function -----------------------------------------------------

function makeDoubleDelegate(onload, operation) {
    
	var tempArgs = [];
	for(var i = 2; i < arguments.length; i++) {
		tempArgs[i - 2] = arguments[i];
	}
	return function() {
        if (onload)
            onload();
        if (operation) {
			if(tempArgs.length == 0) operation();
			else if(tempArgs.length == 1) operation(tempArgs[0]);
			else if(tempArgs.length == 2) operation(tempArgs[0], tempArgs[1]);
			else if(tempArgs.length == 3) operation(tempArgs[0], tempArgs[1], tempArgs[2]);
		}
    }
}

function adviceHide() {
	$('advice').hide();
	Set_Cookie( 'advice', 'true', 30, '/', '', '' );
	//document.cookie = "advice=true; expires=15/02/2012 00:00:00";


}

function Set_Cookie( name, value, expires, path, domain, secure )
{
// set time, it's in milliseconds
var today = new Date();
today.setTime( today.getTime() );

/*
if the expires variable is set, make the correct
expires time, the current script below will set
it for x number of days, to make it for hours,
delete * 24, for minutes, delete * 60 * 24
*/
if ( expires )
{
expires = expires * 1000 * 60 * 60 * 24;
}
var expires_date = new Date( today.getTime() + (expires) );

document.cookie = name + "=" +escape( value ) +
( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
( ( path ) ? ";path=" + path : "" ) +
( ( domain ) ? ";domain=" + domain : "" ) +
( ( secure ) ? ";secure" : "" );
}

document.observe("dom:loaded", function() {
    externalUrlReplace(); /*track external link*/
});

//This function each every external link and replace to statcamp url 
function externalUrlReplace(){
    $$("a").each(function(item){
        if ((item.href.match(/^https?\:/i)) && (!item.href.match(document.domain)))
        {
            $(item).observe("click", function(event){
                if(item.rel != '' && headlight){
                    window.open(headlight + item.rel + '&target='+ item.href);
                    Event.stop(event);
                }
                return false;
            });
        }
    }.bind(this));
}
