/**
* Copyright (c) 2007, Impact Proximity
* All rights reserved.
* @author Huzefa Hussain <h.hussain@impactbbdo.ae>
* @version 1.0.1
*/

$(function(){

	// always erase cookie - remove after testing
	//eraseCookie("modPlacement");

	//global vars
	var locale = "en_gb";
	if(window.location.href.indexOf("ar_ae"))
	locale = "ar_ae";
	
	var isIE = $.browser.msie;
	var isIE6 = isIE && ($.browser.version == 6.0);
	var isIE7 = isIE && ($.browser.version == 7.0);
	
	//add 'FirstChild' and sfhover class for ie6 */
	var firstChild = function(){
		$("li:first-child").addClass("FirstChild");
	}
	var lastChild = function(){
		$("li:last-child").addClass("LastChild");
	}
	if($.browser.msie && $.browser.version == "6.0") {
		firstChild();
	}
	// add LastChild class to IE
	if(isIE){
		lastChild();
	}
	
	var externalLinks = function(){
		$('a[rel=external],a[rel=External]').bind('click',function(){$(this).attr('target','_blank')});
	}
	externalLinks();
	
	// Breadcrumb fix
	$("ul.Breadcrumb li:last").each(function(){
		var txt = $(this).text();
		if($(this).find("a").length) $(this).html(txt);
	});
	
	// SubNav fix
	$("ul.Nav1 li li > a").each(function(){
		$(this).text($(this).text().toUpperCase());
	});
	
	// Gradient background fix + png button fixes
	if(isIE6){
		var $strip1 = $("<span />");
		var $strip2 = $("<span />");
		$("div.Page").append($strip1).append($strip2)
		.css({position:'relative'});
		$strip1.addClass("Strip1");
		$strip2.addClass("Strip2");
	}
	
	//sucker fish solution for ie6
	var sfhover = function(){
		$("ul.Navigation0 li").hover(
			function(){$(this).addClass('sfhover')},
			function(){$(this).removeClass('sfhover')}
		)
		;
	}
	if(isIE6) sfhover();
	
	//auto text handler
	$('.Textbox')
	.each(function(){
		var autoText = "";
		var defaultText = $(this).val();
		$(this).bind('focus',function(){
		autoText = $(this).val();
		if(autoText == defaultText) $(this).val("");
		})
		.bind('blur',function(){
			if($(this).val() == "")
			$(this).val(defaultText);
		});
	});
	
	// invoke sortable effects
	var invokeSortable = function(){
		$('div.Column').Sortable(
				{
					accept: 'ModuleWrapper',
					helperclass: 'sortHelper',
					activeclass : 'sortableactive',
					hoverclass : 'sortablehover',
					handle: 'div.ModuleTitle',
					tolerance: 'intersect',
					opacity:.7,
					onChange : function(ser)
					{
					},
					onStart : function()
					{
						$.iAutoscroller.start(this, document.getElementsByTagName('body'));
					},
					onStop : function()
					{
						$.iAutoscroller.stop();
						$(".ModuleWrapper").css({left:0,top:0});

						// IE bug fix
						if(isIE){
							destroySortable();
							invokeSortable();
							collapseExpand();
							listModule();
							showMoreLess();
						}
						
						//save serialized placement to cookie
						setCookiePlacement();
						
					}
				}
			);
	}
	invokeSortable();
	
	var destroySortable = function(){
		$('div.Column').SortableDestroy();
	}
	
	
	// module collapse/expand handler
	var collapseExpand = function(){
		$("div.ModuleWrapper .Expand")
		.unbind()
		.bind('click',function(){
			var $module = $(this).parent().parent();
			var imgSrc = $(this).attr("src");
			$module.toggleClass("Collapsed");
			if($module.hasClass("Collapsed")){
				$(this).attr("src",imgSrc.replace("Collapse","Expand"));
			}
			else{
				$(this).attr("src",imgSrc.replace("Expand","Collapse"));
			}
			
			serializePlacement();
			setCookiePlacement();
			return false;
		})
		;
	}
	collapseExpand();
	
	//serialize module placement
	var serializePlacement = function(){
		var serial = "";
		var $modules = $("div.Column .ModuleWrapper");
		var currCol = $("div.Column:first").attr("id");
		$modules.each(function(){
			var $t = $(this);
			var colChange = false;
			if($t.parent().attr("id") != currCol){
				colChange = true;
				currCol = $t.parent().attr("id");
			}
			var id = $t.attr("id");
			var s = "+";
			var c = colChange ? "*" : "";
			if($t.hasClass("Collapsed")) s = "-";
			serial += c + s + id;
		});
		return serial;
	}

	var moveModule = function($mod,$col,pos){
		var $mods = $(".ModuleWrapper",$col);
		if($mods.length && $mods.eq(pos)){
			$mod.insertBefore($mods.eq(pos));
		}
		else $mod.appendTo($col);
	}
	
	var cookieOptions = {
		domain: '*.estidama.com',
		path: '/estidama',
		hoursToLive: 24,
		secure: true
	  }
	  
	var setCookiePlacement = function(){
		eraseCookie("modPlacement");
		createCookie("modPlacement",serializePlacement(),24);
	}
	
	var getCookiePlacement = function(){
		return readCookie("modPlacement");
	}
	
	var arrangeModules = function(serial){
		if(!serial) {
			setCookiePlacement();
			return;
		}
		var set = serial.split("*");
		for(var i=0;i<set.length;i++){
			var mod = set[i].match(/(\+.\d+)|(\-.\d+)/g);
			for(var j=0;j<mod.length;j++){
				var id = mod[j].replace("+","#").replace("-","#");
				var col = i+1;
				if(mod[j].indexOf("-") > -1) $(id).addClass("Collapsed");
				else $(id).removeClass("Collapsed");
				//alert(id + "," + col + "," + j);
				moveModule($(id),$("#col"+col),j);
			}
		}
	}
	//arrange modules on load
	arrangeModules(getCookiePlacement());
	
	var fixCollapseButton = function(){
		$("div.Collapsed .Expand").each(function(){
			var imgSrc = $(this).attr("src");
			$(this).attr("src",imgSrc.replace("Collapse","Expand"));
		});
	}
	fixCollapseButton();
	
	// register for updates handler
	$("div.RightField .Textbox").bind('focus',function(){
		$(this).parent().next(".EmailOption").css({display:'block'});
	});
	
	
	// Show more/ less handler
	var listModule = function(isPageLoad){
		$("div.ListWrapper").each(function(){
			var $LW = $(this);
			var $LIs = $LW.find("li");
			var $withPrev = $LW.find(".WithPreview");
			var $span = $("<span class='AddRemove' />");

			if($withPrev.length){
				if(isPageLoad) $LIs.filter(":first").addClass("Open");
				var $strong = $withPrev.find("li > strong");
				$strong.unbind().bind('click',function(){
					$LIs.filter(".Open").removeClass("Open");
					$(this).parent().addClass("Open");
				});
			}
			
			if($LIs.length > 3){
				/* attach at the end of module wrapper */
				if(isPageLoad) $span.appendTo($(this).parent());
	
				/* hide LIs with index > 2 */
				if(isPageLoad){
					$LIs.filter(":gt(2)").css({display:'none'});
					$span.toggleClass("AddRemoveExpand");
				}
			}
		});
	}
	listModule(true);
	
	var showMoreLess = function(){
		$("span.AddRemove").each(function(){
			var $LIs = $(this).parent().find("div.ListWrapper li");
			$(this).unbind('click').bind('click',function(){
				if($(this).hasClass("AddRemoveExpand")){
					$(this).removeClass("AddRemoveExpand");
					$LIs.filter(":gt(2)").css({display:'block'});
				}
				else{
					$LIs.filter(":gt(2)").css({display:'none'});
					$(this).addClass("AddRemoveExpand");
				}
			});
		});
	}
	showMoreLess();
	
});


//global functions

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

 /// <summary>
 /// This function is for FAQs.
 /// </summary>
 var FAQs = function()
 {
  $('.Faq > li').click(function(){
   removeSelected();
   $(this).addClass('Active');
   return false;
  });
  function removeSelected()
  {
   $('.Faq > li').each(function(){
     $(this).removeClass('Active');
   });
  }
 }
 FAQs();
 
 //function to disable click on furthur question
 $('.Query a').click(function(){
  return false; 
 });
 
 var registerURL = function(){
  $('.Button').click(function(){
   if(!isValidEmail($('.EmailField input').val()))
   {
    //$('.EmailField').after('<p>Enter a valid email</p>')
    alert ('Please enter a valid Email')
    return false;
   }
   //alert ($('.EmailField input').val()+$('.Recieve input').val()+$('.Participate input'))
   document.location.href = '/staging/register/default_en_gb.aspx?email='+$('.EmailField input').val();
  })
 }
 registerURL();

 
 //function to check valid email address
 function isValidEmail(strEmail){
  
  validRegExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  
  var Email = strEmail;

   // search email text for regular exp matches
   if (Email.search(validRegExp) == -1 || Email.length == 0) 
   {
      return false;
   } 
    return true; 
  }