/***********************************************
* Email Validation script-  Dynamic Drive (www.dynamicdrive.com)
* This notice must stay intact for legal use.
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/
 cntx = null;
<!--
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function pausecomp(millis) 

{
            date = new Date();

            var curDate = null;
            do 
            { 
            var curDate = new Date(); 
            }while(curDate-date < millis);

}
function scrollUp()

{
	
		window.scrollTo(0,0);
	
            /*var s_top = document.documentElement.scrollTop;

            if(s_top == 0)
                        s_top = document.documentElement.scrollTop;
            if(s_top == 0)
                        return;

            var s_diff = 1;
            if(s_top > 100)
                        s_diff = Number(s_top/100);
            for(var cnt=s_top-s_diff;cnt>=0;cnt-=s_diff)

            {           
                        window.scrollTo(0, /*0);
            }

            pausecomp(5);*/
}

function trim(str)
{
	return str.replace(/^\s*|\s*$/g,"");
}

function replaceAll(txt, replace, with_this) {
	return txt.replace(new RegExp(replace, 'g'),with_this);
}

// Error Layer Functions.
var errorTimer;
function displayMessage(msg) 
{
	scrollUp();
	var errObj = document.getElementById('errorDiv');
	if(msg){
		errObj.innerHTML=msg;
	}else{
		errObj.innerHTML = 'Please provide one or more search criteria.';
	}
    errObj.style.display = '';
}

function clearMessage() 
{
    var lsd = $('loginStatusDiv');
	if(lsd)
	{
		lsd.style.display = 'none';
	}
	if($('statusDiv') != null)
	$('statusDiv').style.display='none'
	
	var ediv= $('entityDetailErrorDiv');
	if(ediv) ediv.style.display = 'none';
	var ldiv= $('loginErrorDiv');
	if(ldiv) ldiv.style.display = 'none';
	

}

function getDaysInMonth(month,year)  {
	var days;
	if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)  days=31;
	else if (month==4 || month==6 || month==9 || month==11) days=30;
	else if (month==2)  {
	if (isLeapYear(year)) { days=29; }
	else { days=28; }
	}
	return (days);
}
function isLeapYear (Year) {
  if (((Year % 4)==0)) {
      return (true);
  }else { return (false); }
}


function getCheckedValue(radioObj) {
	if(!radioObj) return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

function setFromTo(gdp_main) {
	var val =getCheckedValue(gdp_main.gdp_when);	
	val = parseInt(val);
	var date = new Date();
	var when = "";
	var till = "";
	switch(val) {      
	  case 2:   when =  date.print("%d/%m/%Y"); till = when;  break;
	  case 3:   when = gdp_main.selectDate.value;  till = when;  break; 
	}	
	
	if(trim(when) == '' ) {
	   when =  date.print("%d/%m/%Y"); till = when; 
	}
	gdp_main.when.value = trim(when);
	gdp_main.till.value = trim(till);	
	gdp_main.dateCriteria.value = val;	
	
}

function activeDate(date,years,months,daysnum) {

  var today = new Date();
  var day   = today.getDate();
  var month = today.getMonth();
  var year  = today.getYear() ;  
  if (year < 2000) year += 1900; 	
  if( (years > year ) ||  (years == year  && months > month )  ||  (years == year  && months == month && daysnum >= day ) )
		return false;
  
	return true;
}

function setWhenFrom(cal) {
	var date = cal.date;
	var time = date.getTime()       
	var field = document.getElementById("gdp_whenfrom");
	if (field == cal.params.inputField) {          
		field = document.getElementById("when");
		var date2 = new Date(time);
		field.value = date2.print("%d/%m/%Y");
	} 		
	
}

function setWhenTo(cal) {
    var date = cal.date;
    var time = date.getTime()       
    var field = document.getElementById("gdp_whento");
    if (field == cal.params.inputField) {
         field = document.getElementById("till");
		 var date2 = new Date(time);
		 field.value = date2.print("%d/%m/%Y");
     } 
        
}

function $(id) 
{
   return document.getElementById(id);
}

function $$(id) 
{
   return document.getElementsByName(id);
}

function getValue(id)
{
   var obj= $(id);
   if(obj)
   {
    return obj.value;
   }
   else 
   {
     obj = $$(id);
     if(obj)
       return obj.value;
     else 
       return null;
   }   
}

// Highlighting Functions.
function highlightTextField(element) 
{
	element.style.border="2px solid #FF0000";
}
function clearHighlightingTextField(element) 
{
	element.style.border="1px solid #666666";
}

function checkEmail(email) 
{
   var emailfilter=/^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i	
   var goodEmail = emailfilter.test(email);
   return goodEmail;
}

function validateEmail(){
 var userEmail = getValue('userEmail');
 var friEmails = getValue('friendsEmail');
 var msg = getValue('message');
 if ( friEmails == 'Multiple emails separated by comma' ) 
     friEmails = ''; 
 
 if(friEmails.length==0 ){
		displayErrorMessage('Please enter atleast one email address');			
 	    highlightTextField($('friendsEmail'));
		return false;			
 }
 else {
	   var emails = friEmails.split(',');
	   var i;
	   for(i=0;i<emails.length;i=i+1){
		   if(!checkEmail(trim(emails[i]))){
			  displayErrorMessage('Please enter a valid email address');			
			  highlightTextField($('friendsEmail'));
		   	  return false;
		  }
	   }
	   clearHighlightingTextField($('friendsEmail'));   
   			
   }
   
   if( userEmail.length==0 ){
		displayErrorMessage('Please enter My Email address');			
		highlightTextField($('userEmail'));
		return false;			
   } else if(!checkEmail(userEmail)) {
	 displayErrorMessage('My Email address is not valid');			
	 highlightTextField($('userEmail'));
	 return false;
   } else {
      clearHighlightingTextField($('userEmail'));
      msg = trim(msg);
     if( msg.length ==0){
		   displayErrorMessage('Please enter add your comments');
 	       highlightTextField($('message'));
		   return false;
	   }
	   clearHighlightingTextField($('message'));
      return true; 
   }
      
  

} 
    

function displayErrorMessage(message) 
{
	var sp = $('errorDiv');
	scrollUp();
	sp.innerHTML = message;
    sp.style.display = '';
    //if(errorTimer != 'undefined')
      //  clearTimeout(errorTimer);
    //errorTimer=setTimeout('clearMessage()', 5000);
}

function displayEntityErrorMessage(divId, message) 
{
	var sp = $(divId);
	sp.innerHTML = message;
    sp.style.display = '';
}



function displayMsg(divname, message) 
{
	var sp = $(divname);
	sp.innerHTML = message;
    sp.style.display = '';
   // if(errorTimer != 'undefined')
     //   clearTimeout(errorTimer);
  //  errorTimer=setTimeout('clearMessage()', 5000);
}

function errorMessages(divname, msg){
	if(divname == null){
		displayErrorMessage(msg)
		displayMsg('loginErrorDiv','&nbsp;')
	}else{
		displayErrorMessage('&nbsp;')
		displayMsg(divname,msg)
	}
}
// Wozzon

function getDiv(show, hide) {
	document.getElementById(show).style.display = '';
	document.getElementById(hide).style.display = 'none';	
}

function remove() {
  eraseCookie("userPref");
}

function rememberPref(a) {   
   createCookie("userPref", a, 365);
   
   
}
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 ca = document.cookie.split(';');
  var nameEQ = name + "=";
  for(var i=0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1, c.length); //delete spaces
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
  }
  return null;
}

function readUserPref(_form)
{

  var pageSize=_form.pageSize;
  var a= readCookie("userPref");
  
  if(a != null) {    
     pageSize.value  = a;
  } else {
     pageSize.value  = 10;
  }

}
var pageIdVal = 0;
function showAllComments(id, pageId) {
	pageIdVal = pageId;
   UserManager.showUsersComment(id, pageId, showCommentsHandler);
}

function showCommentsHandler(source) {
   var obj= $('showcomments');
   var all= $('showAllComments');
   var hide= $('hideComments');
	 var commentCount = parseInt($('userCommentCount').value);
   if( source == "error" ) 
      displayErrorMessage("Error processing your request.");	   
   else   {          
     all.innerHTML = source;  
     all.style.display = '';  
     obj.style.display = 'none';  
		 if(null != $('isRegisteration') && $('isRegisteration').value == "Yes") 
			 $('commentarea').style.display = 'none';
		 if( commentCount > 3 )
     	hide.innerHTML = '<a href="#" onclick="getLayer(\'showcomments\', \'showAllComments\');changeReviewLink(\'show\'); return false;">Hide review</a>';
     	if(pageIdVal==1){ // check for showing review in edit mode
     		var userCommentId = document.getElementById('editCommentId').value;
     		if(userCommentId > 0 ){
     			edituserReview(userCommentId, false);
     		}
     	}
	 }
}
function changeReviewLink(message) {
   var hide= $('hideComments');
   if(message == 'hide')
       hide.innerHTML = '<a href="#" onclick="getLayer(\'showcomments\', \'showAllComments\'); changeReviewLink(\'show\');return false;">Hide review</a>';
    else
       hide.innerHTML = '<a href="#" onclick="getLayer(\'showAllComments\', \'showcomments\');changeReviewLink(\'hide\'); return false;">Show all reviews</a>';

}
function addComment(id) {
	if(null != $('isRegisteration') && $('isRegisteration').value == "No") {
		 var comment =  $('userComment').value 
		 var rating = $('rating').value;
		 if(id != 0 && (comment == ' Add your comments here' || comment.length == 0)) {
			displayErrorMessage("Please add comment.");
		 } else if (comment.length > 1000) {
			 $('userComment').value = comment.substring(0,1000);
			 displayErrorMessage("Comment text can not exceed 1000 characters.");
		 } else if (rating == 0) {
			 displayErrorMessage("Please rate the venue.");
		 }else {
			UserManager.addUserComment(id, comment, rating, addUserCommentsHandler);
		 }
	}
}
var userRating = 0;
function addCommentEvent(id, venueId) {
	
		 var comment =  $('userComment').value 
		 var termsAndConditions = $('termsAndConditionsReview');
		 var rating = $('rating').value;
		 if(id != 0 && (comment == ' Add your comments here' || comment.length == 0)) {
			displayEntityErrorMessage("entityDetailErrorDiv" ,"Complete your review before submitting. Both rating and comments are compulsory.");
		 } else if (comment.length > 1000) {
			 displayEntityErrorMessage("entityDetailErrorDiv" ,"Comment text can not exceed 1000 characters.");
		 } else if (rating == 0) {
			 displayEntityErrorMessage("entityDetailErrorDiv" ,"Complete your review before submitting. Both rating and comments are compulsory.");
		 } else if (!(termsAndConditions!=null && termsAndConditions.checked) ) {
			 displayEntityErrorMessage("entityDetailErrorDiv" ,"You must accept our review terms & conditions before you can submit a review.");
		 } else {
			clearMessage();
			UserManager.addUserCommentEvent(id, venueId, comment, rating, addUserCommentsHandler);
			userRating = parseInt(rating);
		 }
	
}

function cancelComment() {
  clearMessage();
  $('commentarea').style.display = 'none';
  $('userComment').value ='' ;
}
function addUserCommentsHandler(source) {
   var obj= $('showcomments');
   var hide= $('hideComments');
   if( source == "error" ) 
      displayEntityErrorMessage("entityDetailErrorDiv" ,"Error processing your request.");	
   else if(source == "ShowAddCommentArea") {
	   $('commentarea').style.display = '';
   }
   else if( source == "logout")  {
	 if($('topId') != null) {  
	   	showLoginTable('SubmitRating',$('topId'));		
		return;
	 }
	  //document.getElementById("aw_tbl_login").style.display = "";   		
   }
   else if( source == "SessionOut")  {
   		 displayErrorMessage("Login session expired.");  		
   }
   else  if(source == "AlreadyReviewed" ) {
		  displayEntityErrorMessage("entityDetailErrorDiv" ,"You have already reviewed this event.");
			$('addYourRatingLink').style.display = 'none';
			$('commentarea').style.display = 'none';
     	$('userComment').value ='' ;
			showAllComments($('entityID').value,0);
	 } else {          
     obj.innerHTML = source;
		 if(null != $('addYourRatingLink'))  $('addYourRatingLink').style.display = 'none';
     $('commentarea').style.display = 'none';
     $('userComment').value ='' ;
     obj.style.display = '';
     var allComments = $('showAllComments');
     if(allComments) {
        if(hide) hide.style.display = 'none';
        allComments.style.display = 'none';
     }
     var  reviewArea = $('reviewarea');
     if(reviewArea) {
        reviewArea.style.display = '';     
     }
     var userCommentCount =$('userCommentCount').value;
     var totalRating = $('totalRating').value  ;
     totalRating = parseInt(userRating) + parseInt(totalRating);
     userCommentCount = parseInt(userCommentCount) +  1;
     $('userCommentCount').value = userCommentCount;
     selstar(totalRating , userCommentCount);     
     if(userCommentCount == 1 ) {
       $('averageReview').style.display = '';   
       $('firstReview').style.display = 'none';   
      } 
	 $('totalReview').innerHTML = '(' + userCommentCount  +  ')'; 
   }
}
function showCommentArea() {
  $('commentarea').style.display = '';
}

function selstarRate(num, isVenue) {
	cntx = document.getElementById('cntx');
	if(cntx != null) cntx = cntx.value;
	
	var rImg = null, wImg = cntx+'images/stars_white.jpg';

	if(isVenue){
		rImg = cntx+'images/stars_green.jpg';
	}else{
	rImg = cntx+'images/stars_yellow.jpg';
	}
		var curnum = 0;
		for (curnum = 1; curnum <= 5; curnum++) {
			if (num >= curnum) {
				document.getElementById('star0'+curnum).src = ''+rImg;
			} 
			else {
				curnumhalf = curnum - 0.51;
				if (num >= curnumhalf) {
					document.getElementById('star0'+curnum).src = ''+rImg;
				} 
				else {
					document.getElementById('star0'+curnum).src = ''+wImg;
				}
			}
		}
}

function selstar(totalRates,ratingUsers, isVenue) {
		var num=0,maxRating =5,curnum = 0,curnumhalf,obj;
		num = ( (ratingUsers==0)? 0 : (totalRates/ratingUsers) );
		num = ((num>maxRating)? maxRating : num );
		
		var rImg = null, wImg = cntx+'images/stars_white.jpg';
		if(isVenue){
				rImg = cntx+'images/stars_green.jpg';
		}else{
			rImg = cntx+'images/stars_yellow.jpg';
			
		}
		
		for (curnum = 1; curnum <= maxRating; curnum++) {
 		   var obj = document.getElementById('star'+curnum)

			if (num >= curnum) {
				obj.src = rImg;
			}
			else {
				curnumhalf = curnum - 0.51;

				if (num >= curnumhalf) {
        	      obj.src = rImg;
				} else {
		  	      obj.src = wImg;
				}

			}

		}

}

function rateIt(rating, isVenue) {
	
    var obj = $('rating');
    var rateStar = $('rateStar');
    var starHtml='';
    var message;
    var messages = ["", "Terrible", "Bad", "Just OK","Good","Excellent"];
	cntx = document.getElementById('cntx');
	if(cntx != null)cntx = cntx.value;
	
    if(obj) {
        obj.value = rating;      
        message = $('star0'+rating).title;
        
		if(isVenue){/* venue */
			for (curnum = 1; curnum <= 5; curnum++) {
				if (rating >= curnum){
					starHtml +='<a href="#" onclick="return rateIt('+ curnum +', true)">' +
					'<img src="'+cntx+'images/stars_green.jpg" title="'+messages[curnum]+'" width="12" height="12" id="star0'+curnum+'" onmouseover="selstarRate('+curnum+', true);" onmouseout="selstarRate('+rating+', true);"/> </a>';
				}
				 else{
					starHtml +='<a href="#" onclick="return rateIt('+ curnum +', true)">' +
					'<img src="'+cntx+'images/stars_white.jpg" title="'+messages[curnum]+'" width="12" height="12" id="star0'+curnum+'" onmouseover="selstarRate('+curnum+', true);" onmouseout="selstarRate('+rating+', true);"/> </a>';
				 }
			}
		}else{/*incase of title display yello stars*/
			for (curnum = 1; curnum <= 5; curnum++) {
				if (rating >= curnum){
					starHtml +='<a href="#" onclick="return rateIt('+ curnum +')">' +
					'<img src="'+cntx+'images/stars_yellow.jpg" title="'+messages[curnum]+'" width="12" height="12" id="star0'+curnum+'" onmouseover="selstarRate('+curnum+');" onmouseout="selstarRate('+rating+');"/> </a>';
				}
				 else{
					starHtml +='<a href="#" onclick="return rateIt('+ curnum +')">' +
					'<img src="'+cntx+'images/stars_white.jpg" title="'+messages[curnum]+'" width="12" height="12" id="star0'+curnum+'" onmouseover="selstarRate('+curnum+');" onmouseout="selstarRate('+rating+');"/> </a>';
				 }
			}
		}
		/* venue */
		
		
        rateStar.innerHTML = starHtml;
        $('rateMessage').innerHTML = '<span>'+message+'</span>';
        //$('rateMessage').innerHTML = '<span style="padding-left:40px;border:#000066 thin dashed">'+message+'</span>';
        $('rateMessage').style.color='#000000';
        $('canelLink').style.display='';
        $('userComment').focus();
    }
    
    return false;
}

function showUserReview(id,size, isVenue){
	if(isVenue == null) isVenue='';
  UserManager.showUserReview(id, size, isVenue, showUserReviewHandler);
}

function showUserReviewHandler(source) {
   var obj= $('showcomments');   
   var  reviewArea = $('reviewarea');
   if( source != "error" )  {
     obj.innerHTML = source;
     obj.style.display = ''; 
     if($('openCommentInEdit')!=null && $('openCommentInEdit').value=='yes'){
     	var userCommentId = document.getElementById('editCommentId').value;
   		if(userCommentId > 0 ){
   			edituserReview(userCommentId, false);
   			$('openCommentInEdit').value='no';
   		}
     }
     if(reviewArea) {
        //reviewArea.style.display = '';     
     }
   }
}

function cancelReview(isVenue) {   
	//if($('isEdit').value == 'Yes') {
		cntx = document.getElementById('cntx');
		if(cntx != null) cntx = cntx.value;
		$('isEdit').value  = '';
		$('commentarea').style.display = 'none';
		if(null != $('editUserReviewLink')) $('editUserReviewLink').style.display = '';
		if(null != $('reviewMainBotton')) $('reviewMainBotton').style.display = 'none';
		if(null != $('reviewMain')) $('reviewMain').style.display = 'none';
		//return false;
	//} else {
    var rateStar = $('rateStar');
    var starHtml='';
    var message = ["", "Terrible", "Bad", "Just OK","Good","Excellent"];
    for (curnum = 1; curnum <= 5; curnum++) {
         if(isVenue){
starHtml +='<a href="#" onclick="return rateIt('+ curnum +', true)"><img src="'+cntx+'images/stars_white.jpg" title="'+message[curnum]+'" width="12" height="12" id="star0'+curnum+'" onmouseover="selstarRate('+curnum+', true);" onmouseout="selstarRate(0, true);"/> </a>';			 
		 }else{
starHtml +='<a href="#" onclick="return rateIt('+ curnum +')"><img src="'+cntx+'images/stars_white.jpg" title="'+message[curnum]+'" width="12" height="12" id="star0'+curnum+'" onmouseover="selstarRate('+curnum+');" onmouseout="selstarRate(0);"/> </a>';			 
		 }
    }
    rateStar.innerHTML = starHtml;
    $('rateMessage').innerHTML = 'Terrible&#0133;<img src="'+cntx+'images/spacer.gif" alt="" width="40" height="15" />&#0133;Excellent';
    $('rateMessage').style.color='#999999';
    $('userComment').style.color='#999999';
    $('userComment').value =' Add your comments here';
    $('canelLink').style.display='none';

    return false;
	//}
}

function getRating(entityId, id,link)  {
   UserManager.getEntityRating(entityId, function(entityRating) {
       if(entityRating) {
            if(entityRating.ratingUsers > 0 ) { 
              // alert(entityRating.entityId);            
              writeStar(entityRating.totalRates, entityRating.ratingUsers, id,link );              
            }
       } else {         
       }
   });
}

function writeStar(totalRates,ratingUsers, id,link, isVenue) {

		cntx = document.getElementById('cntx');
		if(cntx != null) cntx = cntx.value;	
		
        var starTitle = ["", "Terrible", "Bad", "Just OK","Good","Excellent"];
		var num=0,maxRating =5,curnum = 0,curnumhalf,obj;
		num = ( (ratingUsers==0)? 0 : (totalRates/ratingUsers) );
		num = ((num>maxRating)? maxRating : num );
		var starHtml='';
        var message;

		var rImg = null, wImg = cntx+'images/stars_white.jpg';
		if(isVenue){
				rImg = cntx+'images/stars_green.jpg';
		}else{
			rImg = cntx+'images/stars_yellow.jpg';
			
		}
		
        for (curnum = 1; curnum <= maxRating; curnum++) {
			if (num >= curnum) {
				starHtml +='<img src="'+rImg+'" width="12" height="12" />';
			}
			else {
				curnumhalf = curnum - 0.51;
				if (num >= curnumhalf) {
        	      starHtml +='<img src="'+rImg+'" width="12" height="12" />'
				} else {
		  	     starHtml +='<img src="'+wImg+'"  width="12" height="12" />'
				}

			}

		}	
		
		
		message = ratingUsers+' user ratings; average rating: ' + (Math.round(num * 10)/10) + ' (' + starTitle[Math.round(num)] + ')';
		starHtml = '<a href="'+ link + '"  title="' + message + '">' + starHtml + '</a> ' ;
		starHtml += '('+ratingUsers+')'; // <img src="images/spacer.gif" alt="" width="5" height="5" /> remove space between stars and counter
        var obj= null;
		if(isVenue && isVenue == true){
		 obj = $('vrating' +id);
		}else{
		obj = $('rating' +id);// Title rating
		}
        obj.innerHTML = starHtml;        
        obj.style.display = '';
}


function addReviewEventWhileRegisteration(id,emaiId) {
	//set flag
	$('isRegisteration').value = "Yes";
   var comment =  $('userComment').value 
   var rating = $('rating').value;
   UserManager.addReviewWhileRegisteration(id, comment, rating, emaiId, addReviewEventWhileRegisterationHandler);
}

function addReviewEventWhileRegisterationHandler(source) {
	if(null != source) {
		if(source == "error")
			displayErrorMessage("Error processing your request.");  		
		if( source == "SessionOut")  {
   		 displayErrorMessage("Login session expired.");  		
   		}
		emailId = document.getElementById('registration_form').email.value;
		regPassword = document.getElementById('registration_form').password.value;
		UserManager.login(emailId,regPassword,"Y", checkLoginHandler);
			$('addYourRatingLink').style.display = 'none';
			cancelReview();
			showAllComments($('entityID').value,0);
			$('commentarea').style.display = 'none';
			
	}
 	//document.getElementById('reviewTable').style.display = '';
  //document.getElementById('eventTable').style.display = 'none';	
}

function selstarVenue(totalRates,ratingUsers, isVenue) {
	
		cntx = document.getElementById('cntx');
		if(cntx != null) cntx = cntx.value;

		var rImg = null, wImg = cntx+'images/stars_white.jpg';
		if(isVenue){
				rImg = cntx+'images/stars_green.jpg';
		}else{
			rImg = cntx+'images/stars_yellow.jpg';
		}
		

		var num=0,maxRating =5,curnum = 0,curnumhalf,obj;
		num = ( (ratingUsers==0)? 0 : (totalRates/ratingUsers) );
		num = ((num>maxRating)? maxRating : num );
		for (curnum = 1; curnum <= maxRating; curnum++) {
 		   var obj = document.getElementById('star_v'+curnum)

			if (num >= curnum) {
				obj.src = rImg;
			}
			else {
				curnumhalf = curnum - 0.51;

				if (num >= curnumhalf) {
        	      obj.src = rImg;
				} else {
		  	      obj.src = wImg;
				}
			}
		}
}

function getEntityRating(entityId, isVenue)  {
	
	cntx = document.getElementById('cntx');
	if(cntx != null) cntx = cntx.value;
	
   UserManager.getEntityRating(entityId, function(entityRating) {
       if(entityRating) {
          if(isVenue){
			  selstar(entityRating.totalRates, entityRating.ratingUsers, true); 
		  }else{
			  selstar(entityRating.totalRates, entityRating.ratingUsers); 
		  }
		  
       }
   });
}

function getVenueRating(entityId, isVenue)  {
   UserManager.getEntityRating(entityId, function(entityRating) {
       if(entityRating) {
		   if(isVenue){
			   selstarVenue(entityRating.totalRates, entityRating.ratingUsers, true); 
		   }else{
			   selstarVenue(entityRating.totalRates, entityRating.ratingUsers); 
		   }
          
       }
   });
}

function checkRemember(f) { 
  var frm = $(f);
  var emailId = frm.email.value;
  var password = frm.password.value;
  if(frm.chk_rememberMe != null && frm.chk_rememberMe.checked) {
	  remember(emailId,password);
  } else removeUserInfo() ;

}
function checkRememberCampaign(f) { 
  var frm = $(f);
  var emailId = frm.email_.value;
  var password = frm.password_.value;
  if(frm.chk_rememberMe_ != null && frm.chk_rememberMe_.checked) {
	  remember(emailId,password);
  } else removeUserInfo() ;

}

var userInfoForm ;
function readUserInfo(f)
{
  var frm = $(f); 
  userInfoForm = frm; 
  var a= readCookie("wozzonuser");
  if(a != null && frm != null) { 
	 var emailId = frm.email;
     var password = frm.password;     
     var rem=a.split(',');
     emailId.value = rem[0];   
     UserManager.decryptText(rem[1], decryptHandler);
     frm.chk_rememberMe.checked=true;   
  } else {
		 if(frm != null) { //Will forcefully empty both the text boxes.(email n password)
			 frm.reset();
			 frm.login_email.value = ''
     	 frm.login_password.value = '';     
		 }
	}

}
var email_a_cookie;
function remember(a,b) {
	email_a_cookie = a;
	UserManager.encryptText(b, encryptHandler);
}

function decryptHandler(data){
	var password = userInfoForm.password; 
	password.value = data;
}

function encryptHandler(data){
  	var enc=(email_a_cookie+','+data);
    createCookie("wozzonuser",enc,365);
}

function removeUserInfo() {
  eraseCookie("wozzonuser");
}

function eraseCookie(name){
  createCookie(name, "", -1);
}

function displayGrayText(obj, msg){//onblus                
     if(trim(obj.value).length == 0 ){
         obj.style.color='#999999';
         obj.style.fontVariant='small-caps'
         obj.value =  msg;
     }
}
function displayRegularText(obj, msg){//onfocus
     if (obj.value==msg){
         obj.value=''        
     }               
     obj.style.fontVariant='normal'
	 obj.style.color='#000000'; 
}

function validateSearchLocation(searchLocation, latObj, longObj){
	if(searchLocation.length > 1)
	{
	return false;
	}
	else if(latObj.value.length > 1 && longObj.value.length > 1)
	{
	return false;
	}else{
	return true;
	}
}
function onRefreshGrayText(_formObj)
{
    if(_formObj != null)
    {
        
        var objSearchString = _formObj.searchString;
        var objSearchLocation = _formObj.searchLocation;
        var objSearchVenue = _formObj.searchVenue;
        if(objSearchString != null && objSearchString.value==' event or keyword')
        {
                        objSearchString.style.fontVariant='small-caps';
                        objSearchString.style.color='#999999';
        }
        
        if(objSearchLocation != null && objSearchLocation.value==' postcode or town')
        {
                        objSearchLocation.style.fontVariant='small-caps';
                        objSearchLocation.style.color='#999999';
        }

        if(objSearchVenue != null && objSearchVenue.value==' venue name')
        {
                        objSearchVenue.style.fontVariant='small-caps';
                        objSearchVenue.style.color='#999999';
        }
    }
}

//-->
//Map View related js n Ajax [ Ammar ]


//Home Page Related JS

function populateCookies(_form) {
	var gdpForm = _form;
	if (gdpForm.searchLocation.value != "") {
		var currentSearchLocation = gdpForm.searchLocation.value;
		var cookieValue = getCookie("searchLocation");
		if (cookieValue.toLowerCase().indexOf(currentSearchLocation.toLowerCase()) != -1) {
			return;
		}
		var cookieArray = null;
		if (cookieValue == "" && cookieValue.length == 0) {
			cookieArray = new Array();
		} else {
			cookieArray = cookieValue.split(",");
		}
		if (cookieArray.length < 5) {
			cookieArray.push(currentSearchLocation);
		} else {
			if (cookieArray.length == 5) {
				cookieArray.shift();
				cookieArray.push(currentSearchLocation);
			}
		}
		cookieValue = cookieArray.toString();
		setCookie("searchLocation", cookieValue.toString(), null);
	}
}

function removeCookie(cookieName) {
	var cookieValue = getCookie("searchLocation");
	cookieArray = cookieValue.split(",");
	for (x in cookieArray) {
		if(cookieArray[x] == cookieName) cookieArray.splice(x,1);
	}
	cookieValue = cookieArray.toString();
	setCookie("searchLocation", cookieValue.toString(), null);
	
	//setCookie("searchLocation", cookieName, -1);
	printPreviousLocations();
}

function printPreviousLocations() {
	var cookieValue = getCookie("searchLocation");
	var cookieArray = null;	
}
function setCookie(c_name, value, expiredays) {
	var exdate = new Date();
	exdate.setDate(exdate.getDate() + expiredays);
	document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
}
function getCookie(c_name) {
	if (document.cookie.length > 0) {
		c_start = document.cookie.indexOf(c_name + "=");
		if (c_start != -1) {
			c_start = c_start + c_name.length + 1;
			c_end = document.cookie.indexOf(";", c_start);
			if (c_end == -1) {
				c_end = document.cookie.length;
			}
			var cookieVal = unescape(document.cookie.substring(c_start, c_end));
			cookieVal = cookieVal.replace('\"',"").replace('\"',"");
			return cookieVal;
		}
	}
	return "";
}


function formatDateHomePage(_date) {
	var m_names = new Array("Jan", "Feb", "Mar", 
	"Apr", "May", "Jun", "Jul", "Aug", "Sep", 
	"Oct", "Nov", "Dec");
	
	var day = _date.substring(0,2);
	var month = _date.substring(3,5);
	var year = _date.substring(6);
	month = month - 1 ;
	var d = new Date(year,month,day)
	return m_names[month] + ". " + day + ", " + year;
}
//End of Home Page related JS
/*** T R A N S P A R E N T   G I F     P A T C H ***/
var bgsleight	= function() {
	function addLoadEvent(func) {
		var oldonload = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = func;
		} else {
			window.onload = function() {
				if (oldonload) {
					oldonload();
				}
				func();
			}
		}
	}
	function fnLoadPngs() {
		var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
		var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);
		for (var i = document.all.length - 1, obj = null; (obj = document.all[i]); i--) {
			if (itsAllGood && obj.currentStyle.backgroundImage.match(/\.png/i) != null) {
				fnFixPng(obj);
				obj.attachEvent("onpropertychange", fnPropertyChanged);
			}
		}
	}

	function fnPropertyChanged() {
		if (window.event.propertyName == "style.backgroundImage") {
			var el = window.event.srcElement;
			if (!el.currentStyle.backgroundImage.match(/x\.gif/i)) {
				var bg	= el.currentStyle.backgroundImage;
				var src = bg.substring(5,bg.length-2);
				el.filters.item(0).src = src;
				el.style.backgroundImage = "url(x.gif)";
			}
		}
	}

	function fnFixPng(obj) {
		var bg	= obj.currentStyle.backgroundImage;
		var src = bg.substring(5,bg.length-2);
		obj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')";
		obj.style.backgroundImage = "url(x.gif)";
	}
	return {
		
		init: function() {
			
			if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) {
				addLoadEvent(fnLoadPngs);
			}
			
		}
	}
	
}();


/*** T R A N S P A R E N T   G I F     P A T C H ***/

/*Method to Bookmark event/venues - START*/
function bookmark(venueId, titleId, pgId, entityName) {
	UserManager.addUserBookmark(venueId, titleId, pgId, entityName, addUserBookmarkHandler);
	
	function addUserBookmarkHandler(data) {
		if (data == "logout") {
			if ($('bookmarkMyWozzonId') != null) {
			 	showLoginTable('addUserBookMark', $('bookmarkMyWozzonId'));
				return;
			}
		} else if (data == 'Yes') {
			if (venueId != 0 && titleId == 0 && pgId == 0) { // Venues
				var popup_msg = 'Your venue has been bookmarked...';
			} else if (venueId == 0 && titleId != 0 && pgId == 0) { // Titles
				var popup_msg = 'Your title has been bookmarked...';
			} else { // Events
				var popup_msg = 'Your event has been bookmarked...';
			}
		} else if (data == 'Exist') {
			if (venueId != 0 && titleId == 0 && pgId == 0) {
				var popup_msg = 'You have already bookmarked this venue.';
			} else if (venueId == 0 && titleId != 0 && pgId == 0) {
				var popup_msg = 'You have already bookmarked this title.';
			} else {
				var popup_msg = 'You have already bookmarked this event.';
			}
		} else {
			if (venueId != 0 && titleId == 0 && pgId == 0) {
				var popup_msg = 'Error while bookmarking venue.';
			} else if (venueId == 0 && titleId != 0 && pgId == 0) {
				var popup_msg = 'Error while bookmarking tilte.';
			} else {
				var popup_msg = 'Error while bookmarking event.';
			}
		}
		alert(popup_msg); 
	}
}
/*Method to Bookmark event/venues - END*/

/*Method to remove bookmarked event/venues - START*/
function removeUserBookmark(bookmarkId, bookmarkType){
		
	UserManager.removeUserBookmark(bookmarkId, removeUserBookmarkHandler);
	
	function removeUserBookmarkHandler(data) {
		if (data == 1) {
			$('bookmark_row_'+bookmarkId).style.display = 'none';
			var popup_msg = 'Bookmark removed.';
		} else if (data == 0) {
			var popup_msg = 'Error while removing bookmark.';
		}
		
		alert(popup_msg); 
		if(bookmarkType=='event'){
			bookmarkedEventSize= bookmarkedEventSize -1 ;
			if(bookmarkedEventSize==0){showNoEventBookmark();}//In mywozzon_bookmark			
		}else if(bookmarkType=='venue'){
			bookmarkedVenueSize= bookmarkedVenueSize -1 ;
			if(bookmarkedVenueSize==0){showNoVenueBookmark();}//In mywozzon_bookmark
		}
	}
}
/*Method to remove bookmarked event/venues - END*/
var IMAGE_CONTAINER_W=240;
var IMAGE_CONTAINER_H=180;
 var editFlag=false;
var CJ_Image = {
	Calculate: function(options) {
		// declare some local variables
		var ratioX, ratioY, scale, newWidth, newHeight;
		// Check to make sure all the required variables were sent and pass validation
		if (typeof options.srcWidth !== "number" || typeof options.srcHeight !== "number" || typeof options.destWidth !== "number" || typeof options.destHeight !== "number" || typeof options.method !== "string") {
			return;
		}
		// Grab scale ratios
		ratioX = options.destWidth / options.srcWidth;
		ratioY = options.destHeight / options.srcHeight;
		// Determine which algorithm to use
		if (options.method === "fit") {
			scale = ratioX < ratioY ? ratioX: ratioY;
		} else if (options.method === "fill") {
			scale = ratioX > ratioY ? ratioX: ratioY;
		}
		// Set new dimensions
		newWidth = parseInt(options.srcWidth * scale, 10);
		newHeight = parseInt(options.srcHeight * scale, 10);
		// Return the new dimensions, plus the offsets, and if the destination box
		// is smaller or equal to the source image dimensions
		return {
			width: newWidth,
			height: newHeight,
			offset: {
				x: parseInt((options.destWidth - newWidth) / 2, 10),
				y: parseInt((options.destHeight - newHeight) / 2, 10)
			},
			fits: options.srcWidth >= options.destWidth && options.srcHeight >= options.destHeight ? true: false
		};
	}
};
function todayDate() {
	var days = new Array("Sunday","Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday");
	var d = new Date();
	return ("<strong>Today is "+ days[d.getDay()]+" "+ d.getDate() + "/"+ d.getMonth()+1 + "/" + d.getFullYear()+"</strong>");

}

function cutoffText(text, size) {
	var str=text;
	if(str.length > size) document.write(str.substring(0,size)+"...");
	else document.write(str);
}
//a function to limit characters in text area
function textCounter(field,cntfield,maxlimit) {
	if (field.value.length > maxlimit)  {
		field.value = field.value.substring(0, maxlimit);
		var msg = " can not be more than ";
		if(field.name == "eventName")
			alert(' \'Event Name\''+msg+'200 characters.');
		else if(field.name == "shortDescription")
		 	alert('\'Short Description\''+msg+'75 characters.');
		else if(field.name == "about")
			alert(' \'About You\''+msg+'1000 characters.');
		else if(field.name == "descp")
			alert(' \'Event Description\''+msg+'4000 characters.');	
		else if(field.name == "category")
			alert(' \'Event Category\''+msg+'200 characters.');	
		else if(field.name == "tags")
			alert(' \'Event Tags\''+msg+'200 characters.');	
		else if(field.name == "fullPrice")
			alert(' \'Full Price\''+msg+'100 digits.');	
		else if(field.name == "fullPriceNotes")
			alert(' \'Full Price Notes\''+msg+'500 digits.');	
		else if(field.name == "child")
			alert(' \'Child Price\''+msg+'100 digits.');	
		else if(field.name == "childNotes")
			alert(' \'Child Price Notes\''+msg+'500 digits.');	
		else if(field.name == "familyPrice")
			alert(' \'Family Price\''+msg+'100 digits.');	
		else if(field.name == "familyPriceNotes")
			alert(' \'Family Price Notes\''+msg+'500 digits.');	
		else if(field.name == "memFriPrice")
			alert(' \'Members/Friends Price\''+msg+'100 digits.');	
		else if(field.name == "memFriPriceNotes")
			alert(' \'Members/Friends Price Notes\''+msg+'500 digits.');		
		else if(field.name == "concession")
			alert(' \'Concession\''+msg+'100 digits.');	
		else if(field.name == "concessionNotes")
			alert(' \'Concession Notes\''+msg+'500 digits.');	
		else if(field.name == "seniorCitizen")
			alert(' \'Senior Citizen Prize\''+msg+'100 digits.');	
		else if(field.name == "seniorCitizenNotes")
			alert(' \'Senior Citizen Price Notes\''+msg+'500 digits.');	
		else if(field.name == "groupPrice")
			alert(' \'Group Price\''+msg+'100 digits.');	
		else if(field.name == "groupPriceNotes")
			alert(' \'Group Price Notes\''+msg+'500 digits.');		
		//Venue	
		else if(field.name == "name")
			alert(' \'Venue Name\''+msg+'200 characters.');	
		else if(field.name == "description")
			alert(' \'Venue Description\''+msg+'4000 characters.');	
		else if(field.name == "usefulInfo")
			alert(' \'Useful Information\''+msg+'1000 characters.');			
		else if(field.name == "venueCategory")
			alert(' \'Venue Category\''+msg+'200 characters.');	
		else if(field.name == "venueTag")
			alert(' \'Tags\''+msg+'200 characters.');		
		else if(field.name == "address1")
			alert(' \'Address\''+msg+'200 characters.');	
		else if(field.name == "townCity")
			alert(' \'Town City\''+msg+'100 characters.');		
		else if(field.name == "postcode")
			alert(' \'Post Code\''+msg+'10 characters.');	
		else if(field.name == "timeNotes" || field.name == "timingNotes")
			alert(' \'Timing Notes\''+msg+'1000 characters.');		
		else if(field.name == "webAddress")
			alert(' \'Web Address\''+msg+'500 characters.');		
		else if(field.name == "email")
			alert(' \'Email\''+msg+'300 characters.');		
		else if(field.name == "enquiresPhNum")
			alert(' \'\Enquires Phone No.\''+msg+'30 characters.');			
	}
	
}


function findPos(obj) {
	var curleft = curtop = 0;
    if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	} else {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
	}
	return [curleft,curtop];
}

function showLoginTableEarnPound(obj){
	if($('isUserLogged') && $('isUserLogged').value == 'Yes' )  {  
		var pos = findPos(obj);
		$('mainDiv_earnpound').style.left = pos[0] - 200 +'px'; 
		$('mainDiv_earnpound').style.top =  pos[1] - 130 +'px';
		showDivs('tbl_login_er');
       return;
	}else {
		var cntx = document.getElementById('cntx');
		if(cntx == null) cntx = "";
		else cntx = cntx.value;
		window.location = cntx;
	}
	
}


function showLoginTable(whichLink,obj) {  


	if(null != whichLink) {
         $('whichLink').value = whichLink;
      }
	  
   if($('isUserLogged') && $('isUserLogged').value == 'Yes' )  {  
/*      if(null != whichLink) {
         $('whichLink').value = whichLink;
      }*/
      checkLoginHandler("UserLogged");
      return;
   } else {	
   		if(null != whichLink && whichLink == "showSubmitChanges") {
			$('whichLink').value = whichLink;
			var pos = findPos(obj);
	   		$('mainDiv').style.left = pos[0] + 380 +'px'; 
			$('mainDiv').style.top =  pos[1] - 250 +'px';
		}else if(null != whichLink && whichLink == "MyWozzon") {
			$('whichLink').value = whichLink;
			var pos = findPos(obj);
	   		$('mainDiv').style.left = pos[0] - 300 + 'px'; 
			$('mainDiv').style.top =  pos[1] + 25 +'px';
		}
		else if(null != whichLink && whichLink == "AddEventRight"){
			var pos = findPos(obj);
			$('mainDiv').style.left = pos[0] - 250 +'px'; 
			$('mainDiv').style.top =  pos[1]-20 + 'px';
			$('whichLink').value = 'AddEvent';

		}
		else if(null != whichLink && whichLink == "Login") {
	    	$('whichLink').value = whichLink;
			var pos = findPos(obj);
			if(obj.id == 'signup_promo')
			{
	   		$('mainDiv').style.left = pos[0] - 100 + 'px'; 
			$('mainDiv').style.top =  pos[1] -500+'px';
				$('whichLink').value = 'signup_promo';
			}else{
				
				if(obj.id == 'h_log_status'){
				$('mainDiv').style.left = pos[0] + 125 + 'px'; 
				$('mainDiv').style.top =  pos[1] - 270  + 'px';
				}else{
	   			$('mainDiv').style.left = pos[0] - 405 + 'px'; 
				$('mainDiv').style.top =  pos[1] + 25+'px';
				}
			}
		}else if (null != whichLink && whichLink == "RateEntity"){
			$('whichLink').value = whichLink;
			var pos = findPos(obj);
			$('mainDiv').style.left = pos[0] + 50 + 'px'; 
			$('mainDiv').style.top =  pos[1] + 25+'px';
		
		}else if (null != whichLink && whichLink == "AddRateEntity"){
			$('whichLink').value = whichLink;
			var pos = findPos(obj);
			$('mainDiv').style.left = pos[0] + 150 + 'px'; 
			$('mainDiv').style.top =  pos[1] - 100 +'px';
		
		}else if(null != whichLink && whichLink == "AddEventOnMap") {
	    	$('whichLink').value = whichLink;
			var pos = findPos(obj);
				$('mainDiv').style.left = pos[0] + 200 + 'px'; 
			  $('mainDiv').style.top =  pos[1] + 200 + 'px';
		}
		else if(null != whichLink && whichLink == "SubmitRating") {
	    	$('whichLink').value = whichLink;
			var pos = findPos(obj);
	   		$('mainDiv').style.left = pos[0] + 320 + 'px'; 
			$('mainDiv').style.top =  pos[1] - 200+'px';	
		}else if(null != whichLink && whichLink == "AddEvent"){
				
				var pos = findPos(obj);
				if(obj.id == 'gdp_add_event'){
	          		$('mainDiv').style.left = pos[0] + 'px'; 
					$('mainDiv').style.top =  pos[1]-200 + 'px';
				}else if(obj.id == 'add_event_bottom'){ 
	          		$('mainDiv').style.left = pos[0]+ 'px'; 
					$('mainDiv').style.top =  pos[1]-470 + 'px';
				}else if(obj.id == 'wozzon_otherbox_add_event'){
	          		$('mainDiv').style.left = pos[0]+ 'px'; 
					$('mainDiv').style.top =  pos[1]-470 + 'px';
				}
				else{ 
	          		$('mainDiv').style.left = pos[0]- 200+ 'px'; 
					$('mainDiv').style.top =  pos[1] +25+ 'px';
				}

		}else if(null != whichLink && whichLink == "wozzon_otherbox_add_event"){
				var pos = findPos(obj);
	          		$('mainDiv').style.left = pos[0] - 350 + 'px'; 
					$('mainDiv').style.top =  pos[1] -200+ 'px';
					$('whichLink').value = 'AddEvent';

		}else if(null != whichLink && whichLink == "add_event_bottom"){
				var pos = findPos(obj);
	          		$('mainDiv').style.left = pos[0] + 'px'; 
					$('mainDiv').style.top =  pos[1]-250 + 'px';
					$('whichLink').value = 'AddEvent';

		}else if(null != whichLink && whichLink == "show_upload_img"){
					var pos = findPos(obj);
	          		$('mainDiv').style.left = pos[0]-335 + 'px';
	          		topPos = pos[1]-538;
	          		if(topPos < 0){
	          			topPos = 0 ;
	          		}
	          		$('mainDiv').style.top =  topPos + 'px';
					$('whichLink').value = "show_upload_img";
		}else if(null != whichLink  &&  whichLink == "earnByReviewReg" ){
			var pos = findPos(obj);
			$('mainDiv').style.left = pos[0] - 200 +'px'; 
			$('mainDiv').style.top =  pos[1] - 130 +'px';
		}else if(null != whichLink  &&  whichLink == "earnByReviewReg_home" ){
			var pos = findPos(obj);
			$('mainDiv').style.left = pos[0] + 300 + 'px'; 
			$('mainDiv').style.top =  pos[1] + 100 + 'px';
			
		}else if(null != whichLink) {
			$('whichLink').value = whichLink;		
			if(obj) {
			   var pos = findPos(obj);
	    		if(obj.id =='addEventLink') {
	          		$('mainDiv').style.left = pos[0] - 270 + 'px'; 
					$('mainDiv').style.top =  pos[1] + 'px';
	    		}else if(obj.id =='h_addEventLink' || obj.id =='london_addEventLink'){
					$('mainDiv').style.left = pos[0] + 125 + 'px'; 
					$('mainDiv').style.top =  pos[1] - 270  + 'px';
				}else {		
					$('mainDiv').style.left = pos[0] + 200 + 'px'; 
					$('mainDiv').style.top =  pos[1] - 270  + 'px';
				}
			}
		}else  if(null != whichLink) $('whichLink').value = "";
		$('mainDiv').style.zIndex = "55";
		showDivs('iForgotPassword');
		showDivs('tbl_login');
		showDivs('login_email');
		showDivs('login_password');
		hideDivs('tbl_resetPassword');
		hideDivs('tbl_registration');
	}
	
}

function hideLoginTable() {
	hideDivs('tbl_login');	
	hideDivs('loginError');	
	hideDivs('resetPassword');	
	hideDivs('tbl_registration');
	hideDivs('tbl_resetPassword');
	hideDivs('forgotPassword');
	hideDivs('tbl_resetPasswordEmailSent');
	hideDivs('registerationError');
	hideDivs('tbl_registerationSuccess');
	hideDivs('tbl_showNickHelp');
	hideDivs('forgetPasswordError');
	hideDivs('tbl_doResetPassword');
	hideDivs('tbl_doResetPasswordSuccess');
	hideDivs('tbl_reRegister');
}

function setDefaultValue(obj) {
		var val = trim(obj.value);
		if(val.length  == 0){
			obj.value=obj.defaultValue;
		}
}
function hideDivs(divName) {
	if($(divName)) {
		 $(divName).style.display = 'none';
	}
}

function showDivs(divName) {
  if($(divName)){
		 $(divName).style.display = '';
	}
}
function showRegistrationTable(divName) {
	hideDivs('tbl_login'); 
	showDivs(divName);
	if(document.getElementById('registration_form') != null) {
		document.getElementById('registration_form').nickName.value = '';
		document.getElementById('registration_form').email.value = '';
		document.getElementById('registration_form').reg_password.value = '';
		document.getElementById('registration_form').password1.value = '';
	}
}

function showResetPassTable(divName) {
	
	hideLoginTable();
	showDivs(divName);
	document.getElementById('resetPassword_form').email.value = '';
	hideDivs('forgetPasswordError');
}

function showResetLink() {
	showDivs('resetLink');
	hideDivs('forgetPasswordError');	
}

function showNickHelp(divName) {
	showDivs(divName);
}

function hideNickHelp(divName) {
	hideDivs(divName);
}
//End by Ammar

function goAddVenue( frm_name ){
var frmObj = $(frm_name);
if(frmObj != null)
	{
		frmObj.action="controller.web";
		frmObj.method.value="addVenueEvent";
		frmObj.submit();
	}

}
function o_nGoingChangeDates( ){
	var stats = $('ongoing').checked
	
		var _startD = $('startDate');
		var _endD = $('endDate');

if(stats)
	{
		
		if(_startD != null && _endD != null){
			
			var currDateObj = new Date();
			var yr = currDateObj.getFullYear();
			var stDate = "1/1/"+yr;
			var enDate ="31/12/"+yr;
			_startD.value = stDate;
			_endD.value = enDate;
		
		_startD.style.color = '#999999';
		_endD.style.color = '#999999'
		
		}else{
			alert("Date fields not found");
		}
		
	}else{
		
		_startD.style.color = '#000000';
		_startD.value="";
		_endD.style.color = '#000000';
		_endD.value="";

	}
}

function getQueryVariable(query, variable) {

var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
   return pair[1];
}
   return "0";
}
} 

function reportUnsuitable( )
{
	var formObj = $('unsuitable_form');
	if(formObj != null){
	var hlink = window.location.href;
	
		var qrStr = hlink.substr(0, hlink.indexOf('?'));
		
		var titleId = getQueryVariable(qrStr, "titleId");
		var venueId = getQueryVariable(qrStr, "venueId");
		
		hlink = qrStr + "?"  + getValue('eventURL'); // + "venueId=" +venueId+"&titleId=" + titleId;
        hlink = escape(hlink);
	
	
	var subject = "Report Unsuitable Information on Wozzon";
	var email = "feedback@wozzon.com" ;
	var body = "I would like to report Unsuitable information on Wozzon.com: " ;
	var message = " %0DType here any comments:%0D";	
	var comp ="mailto:"+email+"?subject="+subject+"&body="+ body + hlink+message;
	
	
			win = window.open(comp,'emailWindow');
			if (win && win.open &&!win.closed) win.close();
	}
}
function checkVenue(pageNo) {
	var _form = document.event_venue_main;
	var name = getValue('name');
	var town = getValue('townCity');
	if (name) name = trim(name);
	if (town.length<=0 || (town.indexOf("e.g. Manchester")!= -1)) town  = ''; else trim(town);
	
	if (( name.length <= 0 ) || (name.indexOf("e.g. Odeon")!= -1)) {
		errorMessages('errorDiv', 'Please fill in mandatory field(s) to continue');
		$('name').style.border = '1px solid #ff0000';
		$('venueName').style.color = '#ff0000';
	} else {
		showProgress();
		UserManager.checkVenue(name, town, pageNo, checkVenueHandler);
	}
}

function loginAjax(id) {
	var emailId = "";
	var password = "";
	var isRemember = "";
	if(id == '1') {
		document.getElementById('login_form').identity.value = '1';
		emailId = document.getElementById('login_form').email.value;
		password = document.getElementById('login_form').password.value;
		if(document.getElementById('login_form').chk_rememberMe.checked)
			isRemember = "Y";
			
	} 
	if(checkEmail(emailId) && password != "" ){
		 //document.getElementById('showLoginStatus').style.display = '';
		 setCookie("login_source", "whitelabel", 1);
		  UserManager.login(emailId,password,isRemember, checkLoginHandler);
	}else{
		 
		//errorMessages("loginErrorDiv","The email address or password you provided does not match our records.");
		if(id == '1') {
			document.getElementById('loginError').style.display = '';
			document.getElementById('loginError').innerHTML = "The email address or password you provided does not match our records.";
		}
		
	}
	
	
}
function logout(pageId) {
	var ctx = $('cntx').value;
	if($('isUserLogged'))   {
		$('isUserLogged').value = 'No' ;
	}
	if($('onLogoutGoHome') != null) {
		window.location = ctx+"login.web?method=logout";
	} 
	else {
		UserManager.logout(pageId, logoutHandler);
		/*If User loged out from home page do no login on refersh page.*/
		var objHomePageLogout  = document.getElementById('homePageLogout');
		if(objHomePageLogout != null && objHomePageLogout.value=='true'){
		window.location = ctx+"login.web?method=logout";
		}

	}
	/*For Feature Banner*/
	setCookie("show_feature_banner", "", 0);
}
function logoutHandler(source) {/*Always reload the page when ever logout*/
		var url = document.location.href;
		var pointer =  url.indexOf("controller");
		var hashIndex = url.indexOf("#");
		var lengthUrl = url.length;
		if(url.charAt(lengthUrl) == "#") {
			url = url.substring(pointer,(lengthUrl-1));
		} else if(hashIndex > 0 ) {
		  url = url.substring(pointer,hashIndex);
		} else {
			url = url.substring(pointer,lengthUrl);
		}
		window.location = url;
}

function resetPassAjax(id) {
	var emailId = "";
	 if ( id == '1') {
		 document.getElementById('resetPassword_form').identity.value = '1';
 		 emailId = document.getElementById('resetPassword_form').email.value;
	 } 
	 
	 if(checkEmail(emailId)) {
		UserManager.resetPassword(emailId, resetPasswordHandler);	 
	 } else {		
			displayMsg("forgetPasswordError","Please enter valid email address.");		 
	 }
}


function addVenue() {
	var town = getValue('townCity');
	var name = getValue('name')
	if (town.length<=0 || (town.indexOf("e.g. Manchester")!= -1)) $('townCity').value  = ''; 
	if (( name.length <= 0 ) || (name.indexOf("e.g. Odeon")!= -1)) $('name').value  = ''; 
	
	document.forms.event_venue_main.submit();
}
String.prototype.replaceAll = function(pcFrom, pcTo){

      var i = this.indexOf(pcFrom);

      var c = this;

      while (i > -1){

      c = c.replace(pcFrom, pcTo);
      i = c.indexOf(pcFrom);

      }

      return c;
      }


function validateNumber(inputVal) {
	inputVal = inputVal.replaceAll(' ', "");
	
	if (isNaN(inputVal)) {
		return false;
	} else {
		return true;
	}
}

function checkVenueDetail(){
	form = document.add_venue_form;
	var startDate = form.startTime.value;
 	var endDate =  form.endTime.value;
	var name = form.name.value;
	var town = form.townCity.value;	 
	var pnum = form.enquiresPhNum.value;
	var vDesc = form.description.value;
	var vCategory = form.venueCategory.value;
	var address = form.address1.value;
	var usefulInfo = form.usefulInfo.value;
	var tags = form.venueTag.value;
	var timingNotes = form.timeNotes.value;
	var email = form.email.value;
	
	if(name) name = trim(name);
    if(town) town  = trim(town);
	if(pnum) pnum  = trim(pnum);
	if(vDesc) vDesc = trim(vDesc);
    if(address) address  = trim(address);
	if(email) email = trim(email)
	
	
	if(timingNotes.indexOf("E.g. Mon-Sat 9AM-8PM, Sun 12AM-5PM; closed Bank holidays")!= -1) $('timeNotes').value  = '';
	if(tags.indexOf("E.g. modern art, live music, great food")!= -1) $('venueTag').value  = '';
	if(usefulInfo.indexOf("E.g. admission fee, members only, kids welcome, etc.")!= -1) $('usefulInfo').value  = '';
	
	if(name.length <= 0){
		displayErrorMessage("Please fill the venue name.");
		return false;
	}
	else if(vDesc.length <= 0){
		displayErrorMessage("Please fill the venue description.");
		return false;
	}
	else if( (vCategory.indexOf("Specify other category")!= -1) || vCategory.length <=0){
   	   displayErrorMessage("Please specify venue category");
	   return false;
    }
	else if(address.length <= 0){
		displayErrorMessage("Please fill in the address.");
		return false;
	}
	else if(town.length <= 0){
		displayErrorMessage("Please fill the town name.");
		return false;
	} 
	
	if(!compareGr8erDates(startDate,endDate)) {
			displayErrorMessage("Please provide a valid date range.");
			return false;
	} 
	else if(email.length > 0 && !checkEmail(email)){
			displayErrorMessage("Please provide valid email address.");
			return false;
	}
	else if(!(validateNumber(pnum))){
		displayErrorMessage("Phone number should be numeric.");
		return false;
	}
	else {		
		document.forms.add_venue_form.submit();
	}	
	
}

function editVenueForm(){
	document.venue_detail_form.method.value="editVenueForm";
	document.venue_detail_form.submit();
	}
function submitVenue(){
	document.forms.venue_detail_form.method.value="submitVenue";
	document.forms.venue_detail_form.submit();
	}
	

function addEvent(){
	document.forms.venue_detail_form.action="e_controller.web";
	document.forms.venue_detail_form.method.value="addEventForm";
	document.forms.venue_detail_form.submit();
	}
	

function login(){

 var email = document.forms.login_form.email.value;
 if(trim(email).length == 0 ) {
   errorMessages("loginErrorDiv","Email address is required.");
 } else if(checkEmail(email)) {
	 document.forms.login_form.submit();
 }else{
    errorMessages("loginErrorDiv","Please enter valid email address.");
 }
}
function resetPass(){
 if(checkEmail(document.forms.login_form.email.value)) {
 	 document.forms.login_form.method.value="resetPass";
	 document.forms.login_form.submit();
		}else{
			errorMessages("loginErrorDiv","Please enter valid email address.");
		}
}

function doResetPass(){
	
	
	if(document.forms.login_form.login_password.value.length <=4 || (document.forms.login_form.login_password.value != document.forms.login_form.re_login_password.value )){
		
		if(document.forms.login_form.login_password.value.length <=4 ){
	errorMessages('loginErrorDiv', 'The password should be a minimum of 5 characters long.')
		}else if(document.forms.login_form.login_password.value != document.forms.login_form.re_login_password.value){
	errorMessages('loginErrorDiv', 'Passwords do not match.')		
		}
	}else{
 	 document.forms.login_form.method.value="doResetPass";
	 document.forms.login_form.submit();
	}
}

function doResetPassAjax(){
	
	
	if(document.getElementById('doResetPassword_form').login_password.value.length <=4 || (document.getElementById('doResetPassword_form').login_password.value != document.getElementById('doResetPassword_form').re_login_password.value )){
		
		if(document.getElementById('doResetPassword_form').login_password.value.length <=4 ){
	displayMsg('doResetPasswordError', 'The password must be at least 5 characters long')
		}else if(document.getElementById('doResetPassword_form').login_password.value != document.getElementById('doResetPassword_form').re_login_password.value){
	displayMsg('doResetPasswordError', 'The entered passwords do not match.')		
		}
	}else{
	 var newPassword = document.getElementById('doResetPassword_form').login_password.value
	 var resetToken = document.getElementById('doResetPassword_form').resetPasstoken.value
 	 UserManager.doResetPass(newPassword, resetToken, doResetPassHandler);
	}
}

function registerNow() {
	    if(!checkEmail(document.forms.registration_form.email.value)){
	 		//displayErrorMessage("Please enter valid email.");		
			errorMessages(null,"Please enter valid email address.");	
		}else
		if(document.forms.registration_form.nickName == ""){
			errorMessages(null,"Enter nick name.");
		}else 
		if(document.forms.registration_form.password.value.length <5 ){
			errorMessages(null,"The password should be a minimum of 5 characters long.");
		}else
		if(document.forms.registration_form.password.value != document.forms.registration_form.password1.value){
			errorMessages(null,"Passwords do not match.");
		}
		else{
			document.forms.registration_form.submit();
		}
}

function registerEarnPound(){
	var userAge = "";
	var firstName = "";
	var lastName = "";
	var gender = "";
	var reviewRegion = "";
	var paypalEmail = "";

	UserManager.isEarnPoundReviewer(function(data){
		if(data=='notreviewer'){
			var div = "registerationError_er" ;
			
			firstName = document.getElementById('registration_form_er').firstName.value;
			lastName = document.getElementById('registration_form_er').lastName.value;
			userAge = document.getElementById('registration_form_er').age.value;
			gender = document.getElementById('registration_form_er').gender.value;
			reviewRegion = document.getElementById('registration_form_er').reviewRegion.value;
			paypalEmail = document.getElementById('registration_form_er').paypalEmail.value;
			termsAndConditions = document.getElementById('registration_form_er').termsAndConditionsReview;
			
			if(!(termsAndConditions!=null && termsAndConditions.checked)){
				displayMsg(div, "You must agree to our Terms & Conditions before you can Sign Up.");
			}else if(trim(firstName) == ""){
				displayMsg(div,"Enter first name.");
			}else if(trim(lastName) == ""){
				displayMsg(div,"Enter last name.");
			}else if(!checkEmail(paypalEmail)){
				displayMsg(div,"Enter PayPal Email address.");
			}else{
				displayMsg(div,"");
				UserManager.registerEarnByReview(firstName, lastName, gender, userAge, reviewRegion, paypalEmail, registerationEarnPoundHandler);
			}
		}else if(data!="" && data!='error'){
			div = "registerationError_er"
			displayMsg(div, "Hey " + data +"! You are already registered with this campaign as a local reviewer.");
		}else if(data=='error'){
			div = "registerationError_er"
			displayMsg(div,"Error.");
		}
		
		
	});
}

var user_nickName ="";
function registerNowAjax(id, promotionalReg) {
	var emailId = "";
	var nickName = "";
	var regPassword = "";
	var termsAndConditions = "";
	
	var div = "";
	if(id == '1' ) {
		div = "registerationError" ;
		document.getElementById('registration_form').identity.value = '1';
		emailId = document.getElementById('registration_form').email.value;
		nickName = document.getElementById('registration_form').nickName.value;
		regPassword = document.getElementById('registration_form').password.value;
		retypePass = document.getElementById('registration_form').password1.value;
		termsAndConditions = document.getElementById('registration_form').termsAndConditions;
	}
	
	if(!checkEmail(emailId)){
			displayMsg(div,"Please enter valid email address.");	
		}else
		if(!(termsAndConditions!=null && termsAndConditions.checked)){
			displayMsg(div, "You must agree to our Terms & Conditions before you can Sign Up.");
		}else if("" == nickName || nickName.length == 0){
			displayMsg(div,"Enter nick name.");
		}else 
		if(regPassword.length <5 ){
			displayMsg(div,"The password must be at least 5 characters long.");
		}else
		if(regPassword != retypePass){
			displayMsg(div,"The entered passwords do not match.");
		}else{
			var isRemember = "N";
			var remFlag = false;

			var reg_form_chkbox = document.getElementById('registration_form').chk_rememberMe;
			
			if(reg_form_chkbox != null && reg_form_chkbox.checked)
			isRemember = "Y";
			
			var productServicesChkBox = document.getElementById('productServices');
			
			if(promotionalReg != null && productServicesChkBox && productServicesChkBox.checked){
			remFlag = true;
			}else{remFlag = false;}
			var regPg = document.getElementById('reg_page');
			if(regPg != null){
				regPg = regPg.value;
			}else{
				regPg='wozzon/default'
			}
			
			UserManager.register(remFlag, emailId, nickName, regPassword, isRemember, regPg, registerationHandler);
			
			user_nickName = nickName;
		}
}
function submitEvent(){
	   validateEventFormData(document.add_event_form);
}	
function addAnotherEvent(){
	
	var addAnotherObj = $('addAnotherEvent');
		addAnotherObj.value = 'true';
		document.add_event_form.submit();
	}	
		
function addVenue_Event(id){
	if(id > 0 ) {
	    document.forms['add_venue_event'].venueId.value=id;
    	document.forms['add_venue_event'].submit();
      }	else {
		document.add_event_form.action="v_controller.web";
     	document.add_event_form.method.value="venueDetail";
    	document.add_event_form.submit();
	  }
}

function enterData(e) {
    if (Number(e) == 13) {
		checkVenue(0);
	} else {
		removeErrorState();
		$('btnCheckVenue').style.display = '';
   		$('btnAddNewVenue').style.display = 'none';
		$('venueslist').style.display = 'none';
		checkDisplayLink();
	}
}

function onEnterKeyLogin(e,id) {
	if(Number(e) == 13) {
		loginAjax(id);
	}
}

function checkDisplayLink(){
	var name = getValue('name');
	var town = getValue('townCity');

	if((name!= "") && (town!="" ) ){
		document.getElementById('bottom').style.display = ''; // Shaheer
		//document.getElementById('nlinked').style.display = 'none';
		//document.getElementById('linked').style.display = '';
		document.getElementById('venueslist').style.display = 'none';
	}else if((name != " e.g. Odeon") && (town != " e.g. Manchester")){
		document.getElementById('bottom').style.display = ''; // Shaheer
		//document.getElementById('nlinked').style.display = 'none';
		//document.getElementById('linked').style.display = '';
		document.getElementById('venueslist').style.display = 'none';
	}
	else{
		document.getElementById('bottom').style.display = ''; // Shaheer
		//document.getElementById('nlinked').style.display = '';
		//document.getElementById('linked').style.display = 'none';
		document.getElementById('venueslist').style.display = 'none';
		
		}
}

function checkVenueHandler(source) {
try{
	var obj =  $("venueslist");	

		document.getElementById('bottom').style.display = 'none'; // Shaheer		    
		document.getElementById('venueslist').style.display = '';
   
  if( source == "error" ) 
      displayErrorMessage("Error processing your request.");	
   else if( source == "logout")   
      displayErrorMessage("Your login session has expired");
   else if( source == "notfound")   
      displayErrorMessage("Your login session has expired");   
   else   {          
     obj.innerHTML = source;
   }
   $('btnCheckVenue').style.display = 'none';
   $('btnAddNewVenue').style.display = '';
   
}catch(error){
	   hideProgress();
	}finally{
		hideProgress();
	}
}

function checkVenueHandler(source) {
try{
	var obj =  $("venueslist");	

		document.getElementById('bottom').style.display = 'none'; // Shaheer		    
		document.getElementById('venueslist').style.display = '';
   
  if( source == "error" ) 
      displayErrorMessage("Error processing your request.");	
   else if( source == "logout")   
      displayErrorMessage("Your login session has expired");
   else if( source == "notfound")   
      displayErrorMessage("Your login session has expired");   
   else   {          
     obj.innerHTML = source;
   }
   $('btnCheckVenue').style.display = 'none';
   $('btnAddNewVenue').style.display = '';
   
}catch(error){
	   hideProgress();
	}finally{
		hideProgress();
	}
}

function checkUserSyncAccount() {
	UserManager.checkUserSyncAccount(checkUserSyncAccountHandler);
}

function checkUserSyncAccountHandler(source) {
	var syncAccount = $('syncAccount');
	
	try {
		if (source == "error") {
			syncAccount.style.display = 'none';
		} else if (source == "alreadySync") {
			syncAccount.style.display = 'none';
		} else if (source == "notSync") {
			/*For reverting Feature Banner
			syncAccount.style.display = '';
			*/
			/* For Feature Banner*/
			if($('hasToggled').value=='0'){
				$('hasToggled').value = "1";
				if($('removeSyncPanel').value!="true"){
					syncAccount.style.display = '';
					toggleFeatureBanner();
				}else{
					syncAccount.style.display = 'none';
				}
			}			 
			hideShowFeatureBanner();
			/*For Feature Banner-End*/
		} else if (source == "invalid") {
			syncAccount.style.display = 'none';
		}
	} catch(err) {
	}
}
/* For Feature Banner*/
function hideShowFeatureBanner(){
	
	var syncAccount = $('syncAccount');
	var featureBanner = $('featureBanner');
	if(syncAccount.style.display == 'none'){
		featureBanner.style.display = '';
	}else{
		featureBanner.style.display = 'none';
	}
}

function toggleFeatureBanner(){
	var featureBannerVal = getCookie("show_feature_banner");
	var syncAccount = $('syncAccount');
	if(featureBannerVal=='0'){
		setCookie("show_feature_banner", "1", 1);
		syncAccount.style.display = 'none';
	}else{
		setCookie("show_feature_banner", "0", 1);
		syncAccount.style.display = '';
	}
}
/* For Feature Banner-End*/
function checkLoginHandler(source) {
	var obj = $("loginError");
	var div = "";
	div = "loginError";
	
	document.getElementById('loginError').style.display = '';
	var cntx = document.getElementById('cntx');
	if(cntx == null) cntx = "";
	else cntx = cntx.value;
			
	  if( source == "error" ) 
		displayMsg(div,"Error processing your request.");	
	  else if( source == "Inactive")   
		displayMsg(div,"Please activate your account");   
	  else if( source == "Invalid") {
		displayMsg(div,"The email address or password you provided does not match our records");			
      }else {  
		hideDivs('tbl_login');
		hideDivs('tbl_existing_account');
		if($('login_form').identity.value == '1')  { 
		   checkRemember('login_form');
 	    } 
		if($('tbl_addCommentLogin') != null) 
			 hideDivs('tbl_addCommentLogin');
		
		// check user sync account for display sync banner.
		checkUserSyncAccount();
		
		if($('welcomenote')&& source != 'UserLogged') {			
			$("welcomenote").innerHTML = $("welcomenote").innerHTML = "Welcome "+ source; 
			$('welcomenote').style.display = "";
			if($('isUserLogged')) $('isUserLogged').value ='Yes';
		} else if($('welcomenote_mapView')&& source != 'UserLogged') {
			$("welcomenote_mapView").innerHTML = $("welcomenote_mapView").innerHTML = "Welcome "+ source;
			$('welcomenote_mapView').style.display = "";
			if($('isUserLogged')) $('isUserLogged').value ='Yes';
		}
		if($('commentarea') != null )
			$('commentarea').style.display = "";
			
		$("wozzon_header_logStatus").style.display = '';
		if($("wozzon_header_logStatus") != null)  {		 
			//$('wozzon_header_myWozzonStatus').innerHTML = "<a href='"+cntx+"controller.web?method=myWozzon'>My woZZon</a> | " 
			$('wozzon_header_myWozzonStatus').innerHTML = "<a href='"+cntx+"controller.web?method=myWozzon'><img height='26' width='100'  align='left' border='0' id='id_myWozzon' alt='My Wozzon' src='"+cntx+"images/menu_mywozzon_trans1.png'/></a>" ;
			
			//$("wozzon_header_logStatus").innerHTML =  "<a href='javascript:logout(1)'>Sign out</a>";	
				$("wozzon_header_logStatus").innerHTML ="<a href='javascript:logout(1)'><img border='0' alt='Log out' align='left' src='"+cntx+"images/menu_sign_out.png'/></a>";
		}
		if($("h_addEventLink") != null){
			
			$("h_addEventLink").innerHTML = "<a href='"+cntx+"controller.web?method=addVenueEvent'><img height='101' width='124' alt='Add your event or venues' src='"+cntx+"images/add_block3.jpg'/></a>";
		}
		if($("london_addEventLink") != null){
			$("london_addEventLink").innerHTML = "<a href='"+cntx+"controller.web?method=addVenueEvent'>Add your own<br /> venue or event</a>";
		}
		if( $('upload_link')){
			if($('isUserLogged')) $('isUserLogged').value ='Yes';
		}
		
		var isreviewEvent = $('isReviewEvent')
		if($('isReview') && $('isReview').value == "Yes") {
			  document.getElementById('isReview').value == "No"	;
			  if(document.getElementById('venueId') != null) 
			      addReviewForVenue(document.getElementById('venueId').value);  
		} else if(isreviewEvent && isreviewEvent.value == "Yes") {
       			 isreviewEvent.value == "No"	;       			
       			if($('titleId') != null)  {
				  var titleId = $('titleId').value;
				  var venueId = $('venueId').value;			
				  addCommentEvent(titleId, venueId);  
			   }
			}
			
		if($('whichLink').value == "showSubmitChanges"){
			//to take user direct to edit the venue if the same venue is owned by him, otherwise just submit changes.
			if(null != $('VenueNickName') && trim($('VenueNickName').value).length > 0)  { 
				var nName = $('VenueNickName').value;
				if((source).indexOf(nName)!=-1 ) editThisVenue();
			}
			showSubmitChanges(1); //displaying box to submit changes.
		}

		else if($('whichLink').value == "AddEvent" || $('whichLink').value == "AddEventOnMap" || $('whichLink').value == 'addEventLink') {
			var cntx = document.getElementById('cntx');
			if(cntx == null) cntx = "";
			else cntx = cntx.value;
			window.location = cntx+"controller.web?method=addVenueEvent";
		} else if($('whichLink').value == "AddEventforVenue" && document.forms.w_venue) {
          		document.forms.w_venue.submit();
		}else if($('whichLink').value == "signup_promo"){
			var cntx = document.getElementById('cntx');
			if(cntx == null) cntx = "";
			else cntx = cntx.value;
			window.location = cntx+"controller.web?method=home";
		}else if($('whichLink').value == "MyWozzon") {
			var cntx = document.getElementById('cntx');
			if(cntx == null) cntx = "";
			else cntx = cntx.value;
			window.location = cntx+"controller.web?method=myWozzon";
		} else if($('whichLink').value == "AddEventRight" ) {
			var cntx = document.getElementById('cntx');
			if(cntx == null) cntx = "";
			else cntx = cntx.value;
			window.location = cntx+"controller.web?method=addVenueEvent";
		 } else if($('whichLink').value == "addUserBookMark" ) {
		 	var venueId = document.getElementById('_venueId').value;
		 	var titleId = document.getElementById('_titleId').value;
		 	var pgId = document.getElementById('_pgId').value;
		 	var entityName = document.getElementById('_entityName').value;
	 		bookmark(venueId, titleId, pgId, entityName);
		 }else if($('whichLink').value == "RateEntity" ) {
		 	doFocus();
		 }else if($('whichLink').value == "AddRateEntity" ) {
		 	doFocus();
		 }else if($('whichLink').value == "show_upload_img" ){
			 showUploadDlg();
		 }else if($('whichLink').value == "earnByReviewReg"){
			//var cntx = document.getElementById('cntx');
			//if(cntx == null) cntx = "";
			//else cntx = cntx.value;
			//window.location = cntx + "promotions/registration_earnpound";
			 isEarnPoundReviewer();
		 }else if($('whichLink').value == "earnByReviewReg_home"){
			 populateFLName();
			 registerEarnPound();
		 }
	  }	
}


function resetPasswordHandler(source) {
	var obj = $("forgetPasswordError");
	var div = "forgetPasswordError";
	showDivs(div);
	  if( source == "error" )
		displayMsg(div,"Error processing your request.");	
	  else if(source == "Unmatched")  {
	  	displayMsg(div,"The entered email address does not match our records. Please re-enter your email address");
		hideDivs('resetLink');
	  }
	  else if( source == "EmailSent") {  
    	hideLoginTable();
		showDivs('tbl_resetPasswordEmailSent');
		
	 	//displayMsg("forgetPasswordError","Reset password email sent to your account");   
	  }
	  else   {          
		obj.innerHTML = source;
      }
}

function registerationHandler(source) {
	var obj = $("registerationError");
	var div = "";
	div = "registerationError";	
	showDivs(div);	
	if( source == "1" ) displayMsg(div,"This email address has already been taken");
	else if(source == "2")   displayMsg(div,"Nickname already in use, please select another Nickname");
	else if( source == "3") displayMsg(div,"Error registering user");
	else if(source == "4")	displayMsg(div,"Please enter nick name.");
    else if(source == "5" ) displayMsg(div,"Please enter password.");
    else if(source == "6" ) displayMsg(div,"Please enter  email address.");
	//else if(source == "ReRegistered")  {	
	//		hideLoginTable();
	//		$('tbl_reRegister').style.display = '';
	//	}
    else if(source == "Registered" || source == "ReRegistered")  {		
			
			//checkRemember('registration_form'); // if remmeber me checked save username
			 //var productServicesChkBox = $('productServices');
			// if comming from comptetion registeration page
 	 		
			   //removeUserInfo() ;
			   var submitForm = document.getElementById('compete_form');
			   if(submitForm != null){
				   checkRemember('registration_form'); // if remmeber me checked save username
				   submitForm.submit();
				   return ;
			   }
				
	  		
	  	hideDivs('tbl_registration');			
		var isreviewEvent = $('isReviewEvent')
		var isreview =$('isReview')
				
		if( !( (isreview && isreview.value == "Yes") ||  (isreviewEvent && isreviewEvent.value == "Yes") || 
					  ( $('whichLink').value == "showSubmitChanges" ) )  ) {		
		   showDivs('tbl_registerationSuccess');	 		 
		}
		 checkLoginHandler(user_nickName);
	 } else  {          
	  	obj.innerHTML = source;
	}
}

function registerationEarnPoundHandler(source){
	
	var obj = $("registerationError_er");
	var div = "";
	div = "registerationError_er";	
	showDivs(div);	
	if(source == "7" ) displayMsg(div,"Please enter First Name.");
	else if(source == "8" ) displayMsg(div,"Please enter Last Name.");
	else if(source == "9" ) displayMsg(div,"Please enter PayPal Email.");
	else if(source == "10" ) displayMsg(div,"There is already another user associated with the Paypal email address you have specified.");
	else if(source == "Registered")  {		
	  	showDivs('tbl_regSuccess'); 
	 } else  {          
	  	obj.innerHTML = source;
	}
}

function showRegistrationPage(){
	
	isEarnPoundReviewer();
}
function isEarnPoundReviewer(){
	UserManager.isEarnPoundReviewer(isERReviewerHandler);
}

function isERReviewerHandler(data){
	var div ;	
	
	if(data=='notreviewer'){
		var cntx = document.getElementById('cntx');
		 if(cntx == null) cntx = "";
		 else cntx = cntx.value;
		 window.location = cntx +'promotions/registration_earnpound';
	}else if(data!="" && data!='error'){
		div = "alreadyReviewerDiv"
		displayMsg(div, "Hey " + data +"! You are already registered with this campaign as a local reviewer.");
	}else if(data=='error'){
		div = "registerationError_er"
		displayMsg(div,"Error.");
	}
}

function doResetPassHandler(source) {
	var obj = $("tbl_doResetPassword");
	var div = "tbl_doResetPassword"
	hideDivs('tbl_doResetPassword');
	  if( source == "error" )
		displayMsg(div,"Error processing your request.");	
	  else if(source == "Success") {
        document.getElementById('tbl_doResetPasswordSuccess').style.display = '';
 		var adEvtLinkObj =document.getElementById('addEventLink');
		if(adEvtLinkObj != null){
		var pos = findPos($('addEventLink'));
   		$('mainDiv').style.left = pos[0] - 320 + 'px'; 
		$('mainDiv').style.top =  pos[1] + 'px';
	  	//displayMsg("passwordResetSuccess","Password Reset Successfull");
		}
	  } else if(source == "already_activated") {
    	$('resetPassMsg').innerHTML = 'You have already reset your password.';
    	$('resetPassMsg').style.color = '#FF0000';
		document.getElementById('tbl_doResetPasswordSuccess').style.display = '';
		
		var adEvtLink =document.getElementById('addEventLink');
		if(adEvtLink != null){
		var pos = findPos($('addEventLink'));
   		$('mainDiv').style.left = pos[0] - 380 + 'px'; 
		$('mainDiv').style.top =  pos[1] + 15 + 'px';
		}
   }
		obj.innerHTML = source;
}

function setStartFrom(cal) {
	var date = cal.date;
	var time = date.getTime()       
	var field = document.getElementById("startDate");	
	var date2 = new Date(time);
	field.value = date2.print("%d/%m/%Y");
	$('endDate').value = field.value;
}

function setEndDate(cal) {
    var date = cal.date;
    var time = date.getTime()       
    var field = document.getElementById("endDate");
    var date2 = new Date(time);
	field.value = date2.print("%d/%m/%Y");        
}

function updateAdminFee(id){
    var val ='0';
	if(id == 1){
	    $('priceDiv').style.display='';
		$('otherPriceLink').style.display='';				
	}else if(id == 2){
    	$('priceDiv').style.display='none';
		$('otherPriceLink').style.display='none';
		$('otherPrice').style.display='none';
		
	} else {
    	$('priceDiv').style.display='none';    	
    	val ='';			
	}
	setValue('fullPrice',val);
	setValue('child',val);
	setValue('familyPrice',val);
	setValue('memFriPrice',val);
	setValue('concession',val);
	setValue('seniorCitizen',val);
	setValue('groupPrice',val);
	
}

function setValue(id,val)
{
   var obj= $(id);
   if(obj)
   {
     obj.value=val;
   }
   else 
   {
     obj = $$(id);
     if(obj)
       obj.value=val;     
   }   
}


function loadSubCategory(){
	var obj   = $('categoryId');
    var index = obj.selectedIndex;
 	    id    =obj[index].value;

   if( id == "0" ) {   
     $('categoryId').selectedIndex=0;
	document.forms[0].subcategoryId.disabled=true; 
   } else {   
     UserManager.loadSubCategories(id, loadSubCatHandler);     
   }
}


function loadSubCatHandler(source){
     obj = $("sourceSubCatId");
     obj.innerHTML=source;
     obj.disabled=false;
     
}
function getDateObject(dateString,dateSeperator)
{
	//This function return a date object after accepting 
	//a date string ans dateseparator as arguments
	var curValue=dateString;
	var sepChar=dateSeperator;
	var curPos=0;
	var cDate,cMonth,cYear;

	//extract day portion
	curPos=dateString.indexOf(sepChar);
	cDate=dateString.substring(0,curPos);
	
	//extract month portion				
	endPos=dateString.indexOf(sepChar,curPos+1);			cMonth=dateString.substring(curPos+1,endPos);

	//extract year portion				
	curPos=endPos;
	endPos=curPos+5;			
	cYear=curValue.substring(curPos+1,endPos);
	
	//Create Date Object
	dtObject=new Date(cYear,cMonth,cDate);	
	return dtObject;
}
function parseTime(varTime){


}
function compareGr8erDates(val1, val2){

	if(val2 == "" ){
		return true;
	}
	var date1,date2;

	date1 = getDateObject(val1,"/");
	date2 = getDateObject(val2,"/");

	if(date2 >= date1){
		return true;
	}else{
		return false;
	}
}
function validateFullPrice(valv){
	
	if(valv.indexOf("") != -1){
		valv = valv.replace("","");
		return isNumeric(valv)
	}else{
	return isNumeric(valv)
	}
	
}

	
	
function isDaySelected(){
	var is_selected=false;
		for(i = 0;i <= 6 ; i++){
			if(document.add_event_form.days[i].checked == true ){
				is_selected=true;
				}
		   }
	return is_selected;
	}

function checkDays(){
	var all_checked=true;	

	for(i = 0;i <= 6 ; i++){
		if(document.add_event_form.days[7].checked==true && document.add_event_form.days[i].checked  == false ){
			document.add_event_form.days[7].checked = false;
				}
		}

	for(i = 0;i <= 6 ; i++){
		if(document.add_event_form.days[i].checked == false ){
			all_checked=false;
				}
		   }
 	document.add_event_form.days[7].checked = all_checked;
}

function updateDays(){
	if(document.add_event_form.days[7].checked==true)
	for(i = 0;i <= 7 ; i++){
	    document.add_event_form.days[i].checked=true;
		}

}
function checkAllVenueDays(){
	//if(document.add_venue_form.days[7].checked==true)
	for(i = 0;i <= 6 ; i++){
	    document.add_venue_form.days[i].checked=true;
		}

}
function unCheckAllVenueDays(){
	//if(document.add_venue_form.days[7].checked==true)
	for(i = 0;i <= 6 ; i++){
	    document.add_venue_form.days[i].checked=false;
		}

}


function cancel(name){
   if($(name)) {
	$(name).method.value="cancel";	
   } else {
      $("method").value="cancel";     
   }
   document.forms[name].submit();
}

function isNumeric(strString)
   //  check for valid numeric strings	
   {
   var strValidChars = "0123456789.";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }

function isValidTime(obj, skip)
   //  check for valid numeric strings	
   {
	var strString = obj.value;
   var strValidChars = "0123456789:AM PM am pm Unknown";
   var strChar;
   var blnResult = true;
	
   if(skip && (trim(strString).length <= 0 || strString == ' e.g. 9:00 AM')){
   
   obj.value = "";
   return true;
   }
   
   if (strString.length <= 0)
   return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }

   return blnResult;
   }

function validatePostCode(strString) {
   var strValidChars = "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
	
}

function validateTimeFormat(value, skip) {
	var flag = true;
	var hasMeridian = false;
	value = value.toUpperCase();
	
   var re = /^\d{1,2}[:]\d{2}([:]\d{2})?( [AP][M]?)?$/;
   
   if(value == "UNKNOWN" || value == "OPTIONAL" || value == "Unknown" || value == "Optional"){
		flag =  true;
	}
   else {
		   if (!re.test(value)) { flag = false; }
		   if (value.indexOf("AM") > 0) { hasMeridian = true; }
		   if (value.indexOf("PM") > 0) { hasMeridian = true; }
		   var values = value.split(":");
		   if (hasMeridian)
		   {
			  if ( (parseFloat(values[0]) < 1) || (parseFloat(values[0]) > 12) )
				{
				  flag = false;
				 }
			}else{
			   flag = false;
		   }
		   
		   if ( (parseFloat(values[1]) < 0) || (parseFloat(values[1]) > 59) ) { flag =  false; }
		   if (values.length > 2) {
			  if ( (parseFloat(values[2]) < 0) || (parseFloat(values[2]) > 59) ) { flag =  false; }
		   }
   
   }
   if(skip && trim(value).length <= 0 && !flag){
		flag = true;
	}
	
   return flag;
}

function dotimedrop(time){
var cal_time;
	if(time == "startTimeSelect"){
		cal_time = document.add_event_form.startTimeSelect[document.add_event_form.startTimeSelect.selectedIndex].value;
  	 	if(cal_time == 'All Day'){
		document.add_event_form.startTime.value='12:00 AM';	
		document.add_event_form.startTime.setAttribute('readonly','readonly');
		document.add_event_form.startTime.style.color = '#999999'

		document.add_event_form.endTime.value='12:00 AM';	
		document.add_event_form.endTime.setAttribute('readonly','readonly');
		document.add_event_form.endTime.style.color = '#999999'

		}else{
		document.add_event_form.startTime.value=cal_time;
		document.add_event_form.startTime.removeAttribute('readOnly');
		
		if(document.add_event_form.startTime.value != ' e.g. 9:00 AM'){
		document.add_event_form.startTime.style.color = '#000000'
		}
		
		document.add_event_form.endTime.removeAttribute('readOnly'); 
		
		if(document.add_event_form.endTime.value != ' Optional'){
		document.add_event_form.endTime.style.color = '#000000'
			}
		}

		
			 
  	 }else
	if(time == "endTimeSelect"){
		cal_time = document.add_event_form.endTimeSelect[document.add_event_form.endTimeSelect.selectedIndex].value;
	if(cal_time=='All Day')
		{
  	 	document.add_event_form.endTime.value= '12:00 AM';
		document.add_event_form.endTime.setAttribute('readonly','readonly');
		document.add_event_form.endTime.style.color = '#999999';

  	 	document.add_event_form.startTime.value= '12:00 AM';
		document.add_event_form.startTime.setAttribute('readonly','readonly');
		document.add_event_form.startTime.style.color = '#999999'

		}else{
  	 	document.add_event_form.endTime.value= cal_time;
		document.add_event_form.endTime.removeAttribute('readOnly');
		
		if(document.add_event_form.endTime.value != ' Optional'){
		document.add_event_form.endTime.style.color = '#000000'
		}
		
		document.add_event_form.startTime.removeAttribute('readOnly');
		if(document.add_event_form.startTime.value != ' e.g. 9:00 AM'){
		document.add_event_form.startTime.style.color = '#000000'
			}
		}
  	 }


		 //st_time = document.add_event_form.startTimeSelect[document.add_event_form.startTimeSelect.selectedIndex].value;
		 //en_time = document.add_event_form.endTimeSelect[document.add_event_form.endTimeSelect.selectedIndex].value;
		//alert(st_time);
		//alert(en_time);


}

function editEventForm() {

  document.add_event_form.method.value = "editEvent";
  document.add_event_form.submit();
}

function submitEventForm() {
   document.add_event_form.submit();
}

function addEventPriceValidator(strString)
   //  check for valid numeric strings	
   {
   var strValidChars = "0123456789. -";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length;  i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         break;
         }
      }
   return blnResult;
   }
   
   
function writeTimePeriod(_form){  
    var today = new Date();
    var day   = today.getDate();
    var month = today.getMonth() + 1;
    var year  = today.getYear();
 	if (year < 2000) year += 1900; 	
 	_form.gdp_whenfrom.value =  today.print("%d/%m/%Y");
	
	if(month == 12) {
	   month = 1 ;
	   year = year + 1  ;
	} else month = month + 1 ;
	
	var days = getDaysInMonth(month,year);
	if( days < day )  day = days;
	else if( day < 10 ) day = "0" + day;		
	if( month < 10 ) month = "0" + month;		
    _form.gdp_whento.value =  day + "/" + month+"/" + year; 
}

//To show/hide the Add/show comments Div
function getLayer(show, hide) {
	document.getElementById(show).style.display='';
	document.getElementById(hide).style.display='none';
}

function killEnter(evt) {
	if(evt.keyCode == 13 || evt.which == 13) {
		//alert("ENTER");
		return false;
	}
return true;
}



//Add user Review on Venue Page (Ajax Based Functionality) 
var userVenueRating = 0;
function addReviewForVenue(id) {
   var comment =  $('userComment').value 
   var rating = $('rating').value;
   var termsAndConditions = $('termsAndConditionsReview');
   if(id != 0 && (comment == ' Add your comments here' || comment.length == 0)) {
	  displayEntityErrorMessage("entityDetailErrorDiv" ,"Complete your review before submitting. Both rating and comments are compulsory.");
   } else if (comment.length > 1000) {
	   $('userComment').value = comment.substring(0,1000);
	   displayEntityErrorMessage("entityDetailErrorDiv" ,"Comment text can not exceed 1000 characters.");
   } else if (rating == 0) {
	   displayEntityErrorMessage("entityDetailErrorDiv" ,"Complete your review before submitting. Both rating and comments are compulsory.");
   } else if (!(termsAndConditions!=null && termsAndConditions.checked) ) {
		 displayEntityErrorMessage("entityDetailErrorDiv" ,"You must accept our review terms & conditions before you can submit a review.");
   } else {
	  UserManager.addReviewVenue(id, comment, rating, addReviewVenueHandler);
	  userVenueRating = parseInt(rating);
   }
}


function addReviewVenueHandler(source) {
   var obj= $('showcomments');
   var hide= $('hideComments');
   var rate_this_venue = document.getElementById('rate_this_venue');
	
   if( source == "error" ) 
      displayEntityErrorMessage("entityDetailErrorDiv" ,"Error processing your request.");	
   else if( source == "logout")  {
	   if($('reviewMain') != null) {  
			showLoginTable('SubmitRating',$('reviewMain'));
			return;
		}		
   } 
   else {
	 if(source == "AlreadyReviewed" ) {
	   displayEntityErrorMessage("entityDetailErrorDiv" ,"You have already reviewed this venue.");
		
		if(rate_this_venue != null) rate_this_venue.style.display='none';
		
	   $('commentarea').style.display = 'none';
		 $('reviewMain').style.display = 'none';
		 $('reviewMainBotton').style.display = 'none';
		 $('addYourRatingLink').style.display = 'none';
		 showAllReviews();
	   return;
   	 } 
   	 
     obj.innerHTML = source;	 
		 $('reviewMain').style.display = 'none';
		 $('reviewMainBotton').style.display = 'none';
		 $('addYourRatingLink').style.display = 'none';
     $('commentarea').style.display = 'none';
     $('userComment').value ='' ;
     obj.style.display = '';
     var allComments = $('showAllComments');
     if(allComments) {
        hide.style.display = '';
     }
     var  reviewArea = $('reviewarea');
     if(reviewArea) {
        reviewArea.style.display = '';     
     }
     var userCommentCount =$('userCommentCount').value;
	 var totalRating = $('totalRating').value  ;
	 totalRating = parseInt(userVenueRating) + parseInt(totalRating);
     userCommentCount = parseInt(userCommentCount) +  1;
	 $('userCommentCount').value = userCommentCount;
	 selstar(totalRating , userCommentCount, true);
     if(userCommentCount == 1 ) {
       $('averageReview').style.display = '';   
     }
	  
	  $('totalReview').innerHTML = '(' + userCommentCount  +  ')'
      showDivs('hideUserReviewsLink');
	  $('entityDetailErrorDiv').style.display = 'none';
	  $('showUserReviewsLink').style.display = 'none';
	if(rate_this_venue != null) rate_this_venue.style.display='none';

   }
}
//Scripts for Editing user reviews
var isVenueEditUser = false;
function edituserReview(userCommentId, isVenue) {
	$('isEdit').value = 'Yes';
	if(userCommentId != null) {
		$('userCommentId').value = userCommentId;
		isVenueEditUser = isVenue;
		UserManager.editUserReview(userCommentId, editUserReviewHandler);
	}
}

function editUserReviewHandler(source) {
	var cntx = document.getElementById('cntx');
	if(cntx!=null)cntx = cntx.value;
	
	if(null != source) {
		if(source == "NotFound") {
			displayEntityErrorMessage("entityDetailErrorDiv" ,"Error processing your request.");
			return false;
		} else if(source == "logout") {
			displayEntityErrorMessage("entityDetailErrorDiv" ,"Login session expired.");
			return false;
		}
		else {
		 $('commentarea').style.display = '';
		 if(null != $('topId')) $('topId').style.display = '';
		 if(null != $('bottomId')) $('bottomId').style.display = '';
		 if(null != $('reviewMain')) $('reviewMain').style.display = '';
		 if(null != $('reviewMainBotton')) $('reviewMainBotton').style.display = '';
		 if(null != $('canelLink')) $('canelLink').style.display = ''; 
		 $('userComment').style.display = '';
		 $('userComment').value = source;
		 $('userComment').style.color='#000000';
		 $('userComment').focus();
		 $('commentSumbit').style.display = 'none';
		 $('commentUpdate').style.display = '';
		 $('editUserReviewLink').style.display = 'none';
		 //Star Reseting Functionality	 
			 var rateStar = $('rateStar');
			 var rating = parseInt($('noOfStars').value);
			 var message;
			 var starHtml = '';
       var messages = ["", "Terrible", "Bad", "Just OK","Good","Excellent"];
       message = $('star0'+rating).title;
       //rateIt(rating);

		if(isVenueEditUser){
			rateIt(rating, true);
		for (curnum = 1; curnum <= 5; curnum++) {
				
				if (rating >= curnum)
					starHtml +='<a href="#" onclick="return rateIt('+ curnum +', true)">' +
					'<img src="'+cntx+'images/stars_green.jpg" title="'+messages[curnum]+'" width="12" height="12" id="star0'+curnum+'" onmouseover="selstarRate('+curnum+', true);" onmouseout="selstarRate('+rating+', true);"/> </a>\r\n';
				 else
					starHtml +='<a href="#" onclick="return rateIt('+ curnum +', true)">' +
					'<img src="'+cntx+'images/stars_white.jpg" title="'+messages[curnum]+'" width="12" height="12" id="star0'+curnum+'" onmouseover="selstarRate('+curnum+', true);" onmouseout="selstarRate('+rating+', true);"/> </a>\r\n';
			}
		
		}else{
			rateIt(rating);
			for (curnum = 1; curnum <= 5; curnum++) {
				
				if (rating >= curnum)
					starHtml +='<a href="#" onclick="return rateIt('+ curnum +')">' +
					'<img src="'+cntx+'images/stars_yellow.jpg" title="'+messages[curnum]+'" width="12" height="12" id="star0'+curnum+'" onmouseover="selstarRate('+curnum+');" onmouseout="selstarRate('+rating+');"/> </a>\r\n';
				 else
					starHtml +='<a href="#" onclick="return rateIt('+ curnum +')">' +
					'<img src="'+cntx+'images/stars_white.jpg" title="'+messages[curnum]+'" width="12" height="12" id="star0'+curnum+'" onmouseover="selstarRate('+curnum+');" onmouseout="selstarRate('+rating+');"/> </a>\r\n';
			}
		}

		
        rateStar.innerHTML = starHtml;
			
			$('rateMessage').innerHTML = 'Terrible&#0133;<img src="'+cntx+'images/spacer.gif" alt="" width="40" height="15" />&#0133;Excellent';
			$('rateMessage').style.color='#999999';
		}
	} 
	
	isVenueEditUser = false;
}
var updateVenueUserReview = false;
function updateUserReview(id, isVenue) {
   var comment =  $('userComment').value 
   var rating = $('rating').value;
   var entityId = $('entityID').value;
   var termsAndConditions = $('termsAndConditionsReview');
   if(id != 0 && (comment == ' Add your comments here' || comment.length == 0)) {
	  displayEntityErrorMessage("entityDetailErrorDiv" ,"Complete your review before submitting. Both rating and comments are compulsory.");
   } else if (comment.length > 1000) {
	   $('userComment').value = comment.substring(0,1000);
	   displayEntityErrorMessage("entityDetailErrorDiv" ,"Comment text can not exceed 1000 characters.");
   } else if (rating == 0) {
	   displayEntityErrorMessage("entityDetailErrorDiv" ,"Complete your review before submitting. Both rating and comments are compulsory.");
   } else if (!(termsAndConditions!=null && termsAndConditions.checked) ) {
		 displayEntityErrorMessage("entityDetailErrorDiv" ,"You must accept our review terms & conditions before you can submit a review.");
   }else {
   	  if(isVenue){
	  updateVenueUserReview = true;
	  }
	  UserManager.updateUserReview(id, comment, rating, entityId, updateUserReviewHandler);
	  userVenueRating = parseInt(rating);
   }
}

function updateUserReviewHandler(source) {

	 var entityId = $('entityID').value;	
     var obj= $('showcomments');
     var hide= $('hideComments');		 
	 var rate_this_venue = document.getElementById('rate_this_venue');	 
    if( source == "error" ) 
       displayEntityErrorMessage("entityDetailErrorDiv" ,"Error processing your request.");		 
     else {  
          
        obj.innerHTML = source;
		$('commentarea').style.display = 'none';
		$('editUserReviewLink').style.display = '';
		$('entityDetailErrorDiv').style.display = 'none';
		if($('reviewMain') != null ) $('reviewMain').style.display = 'none';
		if($('reviewMainBotton') != null ) $('reviewMainBotton').style.display = 'none';
		if($('isEdit') != null) $('isEdit').value = 'No' ;
		var allComments = $('showAllComments');
	    if(allComments) {     	   
	        allComments.style.display = 'none';
	    }
	    if(hide) hide.style.display = 'none';
		if(updateVenueUserReview){
		getEntityRating(entityId, true);
		}else{
			getEntityRating(entityId);
		}
		updateVenueUserReview = false;
		if(null != $('isVenue')) showAllReviews();
		if(null != $('isEvent')) showAllComments($('entityID').value,0);
		if(rate_this_venue != null) rate_this_venue.style.display='none';
		
	}
	
}
//End Of Scripts for Editing user Reviews
//End of 'Add User Reviews on Venue Page.

//Script for Pagination of Venues. [By Ammar ]

function getVenueNextPage(pageNo) {
	UserManager.getVenueNextPage(pageNo, checkVenueHandler);
}

//End of Scripts for Pagination of Venues 


//For Add Venue Submission (Scripts From Shaheer, integrated by Ammar) \
// Shaheer
function openAddTimingsArea() {
	document.getElementById("openDate").style.display = '';
	document.getElementById("openDay").style.display = '';
	document.getElementById("timingNotes").style.display = '';
	document.getElementById("addOpeneingTimes").style.display = 'none';
	$('addTimings').value = 'Yes';
	$('openDates').checked = true;
	$('daysOpen').checked = true;
	setAllYear('startTime', 'endTime'); //Setting Date 
	checkAllVenueDays(); //Setting all days of week
}

function closeAddTimingsArea() {
	document.getElementById("openDate").style.display = 'none';
	document.getElementById("openDay").style.display = 'none';
	document.getElementById("timingNotes").style.display = 'none';
	document.getElementById("addOpeneingTimes").style.display = '';
	$('chooseDate').style.display = '';
	$('showDay').style.display = 'none';
	$('showDate').style.display = 'none';
	$('addTimings').value = 'No';
}

function getVanueCategory(value) {
	if (value == "Other")
		document.getElementById("specifyVenueCategory").style.display = '';
	else
		document.getElementById("specifyVenueCategory").style.display = 'none';
}

function popupCalendar(obj) {
	var openDateFrom = new Date();  
	 var opentDateTo = new Date();
	 //opentDateTo.setMonth(openDateFrom.getMonth()+1);
	 document.add_venue_form.startTime.value =  openDateFrom.print("%d/%m/%Y");   
	 document.add_venue_form.endTime.value =  opentDateTo.print("%d/%m/%Y");
	 document.getElementById(obj).onclick();	 
}

function setDateCriteria(inputVal) {
	if(inputVal != null){
		$('dateCriteria').value = inputVal;
	}
}
function setAllYear(objWhen, objTo) {
	var currDateObj = new Date();
	var yr = currDateObj.getFullYear();
	var stDate = "1/1/"+yr;
	var enDate ="31/12/"+yr;
	$(objWhen).value = stDate;
	$(objTo).value = enDate;
}
function venueEventValidation() {
	// TODO
}

//For Event Pagination
function showPagedEvents(pageNo) {
	var venueId = $('venueId').value
	UserManager.eventPager(pageNo,venueId, eventPagerHandler);
}

function eventPagerHandler(source) {
	var obj = $('eventPager');
	$('firstListOfEvents').style.display = 'none';
	obj.innerHTML = source;
	
}

function showShortEventDetail(titleId) { //For a short ajax based detail of event in an overlay.	
	if(document.add_event_form.quickAddEventId) {
		document.add_event_form.method.value="showEventDetail";
		document.add_event_form.titleId.value=titleId;
		document.add_event_form.submit();		
	}else {
		UserManager.showEventDetail(titleId, showEventDetailHandler);
	}
}


function showEventDetailHandler(source) {
	var obj = $('shortEventDetail');
	if(source == "error") {
		displayErrorMessage("Error processing your request.");
	} else {
		obj.style.display = '';
		obj.innerHTML = source;
	}
}

function closeEventDetailLayer(divId) {
	var obj = document.getElementById(divId);
	if(obj != null) 
		obj.style.display = 'none';
}						 
//End For Add Venue Submission 

//Get All counties

function getCounties(countryId) {
	UserManager.getCountiesByCountryId(countryId, getCountyHandler);
}

function getCountyHandler(source) {
	document.getElementById('u8_trf').innerHTML = source;
	/*var obj = $('countyDropDown');
	obj.innerHTML = source;
	obj.style.display = '';
	if(source == "Error")
		obj.style.display = 'none';*/
}

// Shaheer -- 2008 09 15

function showToolTip(obj) {
	obj = $(obj);
	var pos = findPos(obj);
	$('openLayer').style.left = pos[0]  + 20 + 'px'; 
	$('openLayer').style.top =  pos[1] + 'px';
	$('openLayer').style.display = '';
	$('openLayer').style.position = 'absolute';
}

function hideToolTip(obj) {
	$('openLayer').style.display = 'none';
}
function submitViaEnter(evt, id) {
    evt = (evt) ? evt : event;
    var target = (evt.target) ? evt.target : evt.srcElement;
    var charCode = (evt.charCode) ? evt.charCode :
        ((evt.which) ? evt.which : evt.keyCode);
    if (charCode == 13) {
		if(id =='resetPass'){
			//calling ajax submit method.
			doResetPassAjax();
			return false;
		}
		else if(id =='search'){
			//calling ajax submit method.
			lowerSearchEvents();
			//return false;
		}else if(id == 'LocationSpecified'){
			defaultLocationSpecified();
			return false;
		}
    }
	return true;
}
//End get All Counties

function saveGeoLocation(){
	var lat = $('latitude').value;
	var lng = $('longitude').value;
	UserManager.saveGeoLocation(lat, lng, saveGeoLocationHandler);
}
function saveGeoLocationHandler(source){
	if(source != "OK"){
		alert("Warning: Error in Processing GEO Location");
	}
}
function  showProgress(){
	var obj = document.getElementById('dv_progress')
	if(obj != null){
		obj.style.display='inline';
	}
}
function  hideProgress(){
	var obj = document.getElementById('dv_progress')
	if(obj != null){
		obj.style.display='none';
	}
}

function storeSearchLocation(searchLocation) {
	UserManager.storeSearchLocation(searchLocation, storeSearchLocationHandler);
}
function storeSearchLocationHandler(source) {
	if(source == "error") alert("Error strong location in session...");
}


String.prototype.capitalize = function(){ //v1.0
    return this.replace(/\w+/g, function(a){
		return a.charAt(0).toUpperCase() + a.substr(1).toLowerCase();
    });
}
function openTitleGroup(obj, linkObj){
	obj.style.display='';
	linkObj.style.display='none';
}

var SEARCH_LOC_ALL_UK = 'United Kingdom';

function populateSearchLocationFromCookie(){
	var currLoc = getCookie("currentSearchLocation");
	var locObj = $('searchLocation');

	if(currLoc != ""){
		locObj.value = currLoc;
	}else {
		locObj.value = SEARCH_LOC_ALL_UK;
	}
}

function fetchSearchLocationFromCookie(){
	var currLoc = getCookie("currentSearchLocation");
	var locObj = $('searchLocation');

	if(currLoc != ""){
		return currLoc;
	}else {
		return SEARCH_LOC_ALL_UK;
	}
}
function backToSearch(){
	$('gdp_form').submit();
}
function uploadFiles() {
  var image = dwr.util.getValue('imageFile');
  UploadDownload.uploadFiles(image,function(data) {
    dwr.util.setValue('image', data);
  });
}
function finishProgress(){
	var pbt = $('progressBarText');
	if(pbt){
		pbt.innerHTML = 'upload progress: 100%';
	}
	var pbtc = $('progressBarBoxContent');
	if(pbtc){
		pbtc.style.width = parseInt(100 * 3.5) + 'px';
	}
}

function getCroppedImg(){
	var image2 = $('image2');
	if(image2 == null || image2.value == ''){
		return;
	}
	image2  = image2.value;
	
	var iPath =  '/venueImages/images/'+ image2 + '?state='+new Date().getTime();
	showDivs('div_venue_img')
	hideDivs('div_upload')
	hideDivs('div_crop')
	showDivs('img_options')
	var objImg = $('venue_img');
	objImg.src=iPath;
	objImg.style.width='';
	objImg.style.height='';
	objImg.style.display='';
	showControls(false);
}


function resetProgressBar(){
	$('progressBar').style.display='none';
	$('progressBarBoxContent').style.width='0px';
	$('uploadbutton').disabled = false;
    $('file1').disabled = false;
    hideFileSection();
	$('frm_upload').reset();
	
}
function hideCropDiv() {
	
	if(qaImage) {
		qaImage = false;		
		hideDivs('div_crop');
	    divCrop = $('crop_div'); 
	    deleteNodes(divCrop);
	    createCropElement(divCrop);
	    if($('uploadImage')) $('uploadImage').disabled = false;
	} else {
		if(editFlag){
			editFlag= false;
			$('div_crop').style.display='none';
		}else{
			resetProgressBar();
			hideDivs('div_crop');
			var divCrop = $('crop_div');
			deleteNodes(divCrop);
			createCropElement(divCrop);
			clearSession($('image1').value, $('image2').value);
			hideFileSection();
			
			if($('isEventSubmission').value=="true"){
				showDivs('upload_link');
			}else{
				if(imgs && imgs.length == 0){
					showDivs('upload_link');
				}	
			}
		}
	}
	
	if(!qaImagecropped) {
    	if($('uploadImage'))
     	   $('uploadImage').disabled = false;
    }
	
}
function backToUpload(){
	if(qaImage) {
		qaImage = false;		
		hideDivs('div_crop');
	    divCrop = $('crop_div'); 
	    deleteNodes(divCrop);
	    createCropElement(divCrop);
		return false;
	}
	
	if(editFlag){
		editFlag= false;
		$('div_crop').style.display='none';
	}else{
	resetProgressBar();
	var divCrop = $('crop_div');
	deleteNodes(divCrop);
	createCropElement(divCrop);
	clearSession($('image1').value, $('image2').value);
	hideFileSection();
	showUploadDlg();
	}
	
	
}

function deleteNodes(cell)
{
	if ( cell.hasChildNodes() )
	{
    	while ( cell.childNodes.length >= 1 )
    	{
        cell.removeChild( cell.firstChild );      
    	}
	}

}
function createCropElement(parent){
var newNode = document.createElement("img");
newNode.id="cropbox";
newNode.name="cropbox";
newNode.src='';
parent.appendChild(newNode);
}
function showUploadDlg(){
	editFlag= false;
	resetProgressBar();
	$('upload_link').style.display='none';
	$('fileUploadError').innerHTML = '';
	if($('uploadImage')) $('uploadImage').disabled = true;
	if($('report'))
		$('report').style.display='none';
	$('div_crop').style.display='none';
	$('div_upload').style.display='';
	
	divCrop = $('crop_div'); 
	$('file1').value ='';
    deleteNodes(divCrop);
    createCropElement(divCrop);
    if(imgs != undefined && imgs!=null && imgs.length>0){
	    imgs[0].isOld="true";
		showImage(0);
    }
}
function clearSessionMoreImage(){
	   	clearSession($('image1').value, $('image2').value);
	    document.getElementById('image1').value='';
	    document.getElementById('image2').value='';	
	
} 

var qaImage = false;
var qaImagecropped = false;
function getQuickAddToCrop(imageName,width,height){	 
	 $('image1').value = imageName
	 $('imageFileName').value=imageName;
	 var objCropBox = parent.document.getElementById('cropbox');
	 objCropBox.style.width=width + 'px'
	 objCropBox.style.height=height + 'px'
	 qaImage = true;
	 getImgToCrop();
	 $('image1').value = "";
}

function getImgToCrop(){
	finishProgress();
	var source = ""
	if($('image1'))
		source = $('image1').value;
	
	if(source != ""){		
		var iPath = source;
		var imgName = "";
		if(iPath == null || iPath == ""){
			alert('error getting name');
			return;
		}
		imgName = iPath;
		iPath =  '/venueImages/images/'+ iPath;
		$('div_upload').style.display='none';
		hideDivs('cancelUploadBtn');
		showDivs('backUploadBtn');
		$('div_crop').style.display='';
		
		if($('cords') != null){
		$('cords').image.value=imgName;
		$('cords').x.value=0;
		$('cords').y.value=0;
		$('cords').w.value=0;
		$('cords').h.value=0;
		}
		var cropObj = $('cropbox');
		cropObj.src=iPath;
		cropObj.style.display='';
		$('div_img').style.display='';
		
		var rW = cropObj.width;
		var rH = cropObj.height;
		if(rW > IMAGE_CONTAINER_W){rW=IMAGE_CONTAINER_W;}
		if(rH > IMAGE_CONTAINER_H){rH = IMAGE_CONTAINER_H;}
			jQuery(function(){
			jQuery('#cropbox').Jcrop({
			aspectRatio: 0,
			onSelect: updateCoords
				});

			});
	} 
	
	
}

function showDeleteImg(){
	if(!qaImage)
		showDivs('div_delete_pic')
	else {
		qaImage = false;
		hideDivs('div_crop');
	    divCrop = $('crop_div'); 
	    deleteNodes(divCrop);
	    createCropElement(divCrop);
	}
}

function deleteImg(image, page){	
	var del= confirm("Are you sure you want to delete this image?");
	if(del) {
		UserManager.delTempImages(image, page, delTempImageHandler);
	}

}

function delTempImageHandler(source) {
	var imgList = $('imageList');
	if(source == "error") {
		alert("error deleting image");
	}else if(source == "logout") {
		alert("Login session expired");
	}else if(source != "") {		
		if(imgList) {
			imgList.innerHTML = source;
		}
	}
}

function delOldImageHandler(source){
	if(source=="error"){
		alert("error deleting image");
	}else if(source=="logout"){
		alert("Login session expired");
	}else if(source==""){
		hideDivs('div_delete_pic');

		 var hlen = window.location.href.length;
		 if(window.location.href.substr(hlen-1,hlen)=="#"){
			 window.location.href = window.location.href.substr(0,hlen -1);
		 }else{
			 reloadWindow();
		 }
	}else{
		alert("error deleting image");
	}
	
}

function cancelShowDelete(){
	$('div_delete_pic').style.display='none';
}
function deleteImage(image1, image2){
	if(imgs!=null && imgs.length > 0&& imgs[imgCounter].isOld=="true"){ //If image is added prevsly.
		UserManager.deleteOldImage(imgs[imgCounter].imageId, delOldImageHandler);
	}else{//If image is just added (delete original and added image)
		UserManager.deleteImage(image1, image2, deleteImageHandler)
	}
}
function deleteImageHandler(source){
	if(source == null || source == "error"){
		alert("error deleting image");
	}

	hideDivs('div_delete_pic');
	 var hlen = window.location.href.length;
	 if(window.location.href.substr(hlen-1,hlen)=="#"){
		 window.location.href = window.location.href.substr(0,hlen -1 );
	 }else{
		 reloadWindow();
	 }
}
function reloadWindow(){
	window.location.href=window.location.href;
}
function acceptImg(entityId, image1, image2){
	UserManager.acceptImage(entityId, image1, image2, acceptImgHandler)
}
function acceptImgHandler(source){
	if(source == null || source =="error"){
		alert("error acceptiong image");
		return;
	}
	newValue = imgs.length;
	imgs.reverse();
	if(editFlag){
		newValue = newValue -1;
	}

	var infos = source.split("/");
	imgs[newValue] = new ImageInfo("/venueImages/images/"+infos[0],infos[2],"1","false", infos[1]);
	imgs.reverse();
	showImage(0);

}

function acceptImageOnClick(){
	acceptImg($('entityID').value,$('image1').value, $('image2').value);
}

function editImg(image2){
	editFlag = true;
	UserManager.editImage(editFlag, image2, editImgHandler)
}
function editImgHandler(source){
	if(source == null || source == "error"){
		alert('error editimg image');
		return;
	}
	$('imageToDelete').value=$('image2').value;
	showDivs('div_crop');
	showDivs('cancelUploadBtn');
	hideDivs('backUploadBtn');
	hideDivs('div_upload')
}
function reportUnsuitableImg(img, reportText){
	if(reportText.length == 0){
		alert('Please provide detail');
		return;
	}else if(reportText.length > 4000){
		alert('text should not bigger then 4000 characters');
		return;
	}
	UserManager.reportUnsuitableImgage(img.imageName, reportText, reportUnsuitableImgHandler)
}
function reportUnsuitableImgHandler(source){
	if(source == "error"){
		alert("Error processing your request");
	}
	hideDivs('div_report_pic');
	showDivConfirmReport(imgs[imgCounter].imageName);
}
function showDivReport(img){
	$('report_pic').src=img.imageName;
	$('img_report_txt').value='';
	$('div_report_pic').style.display='';
}
function hideDivReport(){
	$('report_pic').src='';
	$('div_report_pic').style.display='none';
}
function showDivConfirmReport(img){
	$('div_confirm_report').style.display='';
	$('div_confirm_report_pic').src=img;
}
function hideDivConfirmReport(img){
	$('div_confirm_report').style.display='none';
	$('div_confirm_report_pic').src='';
}
function stopUpload(){
	window.clearTimeout(timeOut)
	cntx = document.getElementById('cntx');
	if(cntx != null) cntx = cntx.value;

	removeBack('target_upload', cntx + '/images/spacer.gif');
	if(navigator.appName == "Microsoft Internet Explorer")
	{
		window.document.execCommand('Stop');
	}else{
		window.stop();
		
	}
	
}
function clearSession(image1, image2){
	if((image1!=null && image1!="") || 
			(image2!=null && image2!="")){
	
		UserManager.clearSession(image1, image2, clearSessionHandler)
	}
}
function clearSessionHandler(source){
	if(source == "error"){
		//alert(source);
	}
}
function resetUpload(){
	stopUpload();
	resetProgressBar();
}
function validateImage(image_file)
{
var extensions = new Array("jpg","jpeg","gif","png","bmp");
var image_length = image_file.length;
var pos = image_file.lastIndexOf('.') + 1;
var ext = image_file.substring(pos, image_length);
var final_ext = ext.toLowerCase();
for (i = 0; i < extensions.length; i++)
{
	if(extensions[i] == final_ext)
	{
	return true;
	}
}
	return false;
}
function CreateDelegate(contextObject, delegateMethod)
{
    return function()
    {
        return delegateMethod.apply(contextObject, arguments);
    }
}

function img_onload()
{
	var srcImg = $(imageIdent);
	var srcW = this.width;
	var srcH = this.height;
	var d_w=srcW;//IMAGE_CONTAINER_W;
	var d_h=srcH;//IMAGE_CONTAINER_H;
	var cnt_w=0,cnt_h=0;
	
	if(imageIdent == 'report_pic' || imageIdent == 'div_confirm_report_pic'){
		cnt_w=173;
		cnt_h=130;
	}else{//venue_img case
		cnt_w=IMAGE_CONTAINER_W;
		cnt_h=IMAGE_CONTAINER_H;
	}
		if(d_w > cnt_w){d_w=cnt_w;}
		if(d_h > cnt_h){d_h=cnt_h;}
	
		var thumbNail = CJ_Image.Calculate({
		srcWidth: srcW,
		srcHeight: srcH,
		destWidth:  d_w,
		destHeight: d_h,
		method: "fit"
	});

	var rW = thumbNail.width;
	var rH = thumbNail.height;
	srcImg.width=rW;
	srcImg.height=rH;
}
var imageIdent = '';
function scaleMyImage(srcImg, id) {
imageIdent = id;
var nwImg = new Image();
nwImg.onload = CreateDelegate(nwImg, img_onload);
nwImg.src = srcImg.src+'';
}

function getImgesList (){
	var cropDiv =$('div_crop');
	var divCrop = $('crop_div');
    if(cropDiv) {    	 
		 cropDiv.style.display='none';
		 $('div_upload').style.display='none';
		 $('upload_link').style.display='';
		 resetProgressBar();
		 deleteNodes(divCrop);
	   	 createCropElement(divCrop);		
		 hideFileSection();		 
	} 
   
    if(qaImage) {
    	qaImage = false;
    	qaImagecropped = true;
    	if($('uploadImage'))
    	   $('uploadImage').disabled = true;
    }
    
    if(!qaImagecropped) {
    	if($('uploadImage'))
     	   $('uploadImage').disabled = false;
    }
}
function hideFileSection(flag){
	if(flag){
	$('div_file').style.display='none';
	$('p_cert').style.display='none';
	$('upload_statement').style.display='none';
	
	}else{
	$('div_file').style.display='';
	$('p_cert').style.display='';
	$('upload_statement').style.display='';
	}
}
function showControls(flag){
	if(flag){		
		showDivs('report');
		showDivs('nav_control');
	}else{

		if(imgs && imgs.length == 0){
			showDivs('tbl_venue_img');
		}
	}
}

function deleteQAVenue(venueId) {  
	var del= confirm("Are you sure you want to delete this venue?");
	if(!del) return false;
	var obj =  $("quickAdd_" + venueId);
    UserManager.delQuickAddVenue(venueId, 
    	function(source){
		 	if(source == "error") {
		 		errorMessages('errorDiv', 'Error deleting venue');
		 	}  else if(obj) {
	        	obj.style.display='none';
	        }
		}
    );
}

function deleteQAEvent(eventId) {   
	var del= confirm("Are you sure you want to delete this event?");
	if(!del) return false;
	var obj =  $("quickAdd_" + eventId);
	UserManager.delQuickAddEvent(eventId, 
    	function(source){
		 	if(source == "error") {
		 		errorMessages('errorDiv', 'Error deleting event');
		 	}  else if(obj) {
	        	obj.style.display='none';	        	
	        }
	
		}
	);
}

function removeBack(frame, URL) {
	
	var IFrameObj = document.getElementById(frame);
	if (IFrameObj.contentDocument) {
		// For NS6
		IFrameDoc = IFrameObj.contentDocument;
	} else if (IFrameObj.contentWindow) {
			//	For IE5.5 and IE6
		IFrameDoc = IFrameObj.contentWindow.document;
	} else if (IFrameObj.document) {
		// For IE5
		IFrameDoc = IFrameObj.document;
	} else {
		return true;
	}

	IFrameDoc.location.replace(URL);
	return false;
}

function ImageInfo(imageName,nick,deleteable, isOld, imageId) {
	this.imageName=	imageName;
	this.nickName =	nick;
	this.deleteable = deleteable;
	this.isOld = isOld;
	this.imageId = imageId;
}
function isNumeric(strString)
   //  check for valid numeric strings	
   {
		 
   var strValidChars = "0123456789.";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
			
   return blnResult;
   }
	 
 function removePound(objName) {
  var objPrice = $(objName);
	if(objPrice){
		if(objPrice.value.indexOf('') !=-1 ){
			objPrice.value = objPrice.value.replace("","");
		}
	}
	
}

function removeNotes(objName) {
  var objPrice = $(objName);
	if(objPrice && objPrice.value == '<Notes>'){	
			objPrice.value = ''
		
	}
	
}
function removeZero(objName) {
  var objPrice = $(objName);
	if(objPrice){
		if( trim(getValue(objName)) == "0" ){
			objPrice.value = "";
		}
	}
	
}
function Asc(Str)
{
	return Str.charCodeAt(0);
}
function priceValidator(strString)   {
	
   var strValidChars = "0123456789. -,�";
   var strChar;
   strString = strString.replace("","");
   if (strString.length == 0) return false;
    for (i = 0; i < strString.length;  i++){
      strChar = strString.charAt(i);
	  if(Asc(strChar) == 163){
		  continue;
		  }
	  //alert(strChar+' - '+Asc(strChar));
      if (strValidChars.indexOf(strChar) == -1) {         
         return false;
      }
    }
   return true;
}

function validatePriceField(objName) {
   if( objName == 'fullPrice' &&  !priceValidator(trim(getValue('fullPrice')))) {
     	displayErrorMessage("The characters in the pricing field need to be numeric");
     	highlightTextField($(objName));
     	$(objName).focus();
     	return false;
	} else if( trim(getValue(objName)).length > 0 &&  !priceValidator(getValue(objName))) {
       	displayErrorMessage("The characters in the pricing field need to be numeric");
       	highlightTextField($(objName));
       	$(objName).focus();
       	return false;
	}
	return true;
}

function validateEventPrice(add_event_form) {

	var priceOpt = getCheckedValue(add_event_form.addmissionFee);
	if(priceOpt == 1) {		
	    if(!validatePriceField('fullPrice')) return false;	      
		if(!validatePriceField('child')) return false;
		if(!validatePriceField('familyPrice')) return false;
		if(!validatePriceField('memFriPrice')) return false;
		if(!validatePriceField('concession'))  return false;
		if(!validatePriceField('seniorCitizen')) return false;
		if(!validatePriceField('groupPrice')) return false;				
		     	
	}
	return true;

}
function removeDefaultData() {
        removePound('fullPrice');
		removePound('child');
		removePound('familyPrice');
		removePound('memFriPrice');
		removePound('concession');
		removePound('seniorCitizen');
		removePound('groupPrice');
		
		removeZero('child');
		removeZero('familyPrice');
		removeZero('memFriPrice');
		removeZero('concession');
		removeZero('seniorCitizen');
		removeZero('groupPrice');
		
		removeNotes('fullPriceNotes');
		removeNotes('childNotes');
		removeNotes('familyPriceNotes');
		removeNotes('memFriPriceNotes');
		removeNotes('concessionNotes');
		removeNotes('seniorCitizenNotes');
		removeNotes('groupPriceNotes');
		displayRegularText($('tags'),' E.g. suitable for kids, great music, etc.')
		displayRegularText($('category'),' Specify event category')
}

function validateEventTimingRows() {
  var allDays;
  var allDates;
  var allTime;
  var timingRows=''; 
  var isError = false;
  for(var i=1; i<=addId; i++ ) {
    if( i > 1 ) timingRows = timingRows + '~'
    allDates = getCheckedValue($$('openDates_'+ i));    
    if( allDates == 2 ){
        if(compareGr8erDates($('whenfrom_'+i).value, $('whento_'+i).value))
	           timingRows = timingRows + $('whenfrom_'+i).value + '|' + $('whento_'+i).value ;
	     else {
     	      displayErrorMessage("End Date should be greater or equal to start Date");
     	      highlightTextField($('whento_'+i));
     	      $('whento_'+i).focus();
     	      isError =true;
	     }  
    
    } else {
      timingRows = timingRows + onGoingDates(i);
    }
  
    allDays =  getCheckedValue($$('openAllWeek_'+ i));        
    if( allDays == 2 ){	
      timingRows = timingRows + '|' +  getDaysValue(i);     
    } else {
      timingRows = timingRows + '|' + 'Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday'
    }
    
    allTime =  getCheckedValue($$('hour_'+ i));
    if( allTime == 1 ){
      timingRows = timingRows + '|' + '12:00 AM' + '|' + '12:00 AM';
    } else {
      var timings = getTimingsValue(i);
      if(timings.length > 0 ) 
         timingRows = timingRows + '|' +  timings ;
       else isError =true;  
    }
	timingRows = timingRows + '|' + $('currentRowId_'+i).value;
  }
  if(!isError) setValue('timingRows',timingRows);  
  return !isError;
}




function onGoingDates(rowId) {	
	
	var currDateObj = new Date();
	var yr = currDateObj.getFullYear();
	var stDate = "01/01/"+yr;
	var enDate ="31/12/"+yr;
	return stDate + '|' + enDate;
	//$('whenfrom_'+rowId).value = stDate;
    //$('whento_'+rowId).value = enDate;
}

function getDaysValue(rowId){
   var days = $$('chkChooseDay_' + rowId);
   var daysValues= '' ;
   
	for(i = 0;i <days.length; i++){
	
		if(days[i].checked){
           if( daysValues != '' ) daysValues = daysValues + ', '
		   daysValues = daysValues + days[i].value;
		} 
    }
    if( daysValues == '' ) daysValues= ' ' ;
	return daysValues;
}
function getTimingsValue(rowId){
   var startHour = $('startHour_' + rowId);
   var startMins = $('startMin_' + rowId);
   var startFormat = $('startFormat_' + rowId);
   var endHour = $('endHour_' + rowId);
   var endMins = $('endMin_' + rowId);
   var endFormat = $('endFormat_' + rowId);
   var time='';
   if(startHour.value == 'All' &&  startMins.value == 'All') {
      if(endHour.value == 'All' &&  endMins.value == 'All' )
          time =  time  +  'TBC' ;
      else {
        displayErrorMessage("Please select start time");
        highlightTextField(startHour);
        highlightTextField(startMins);
        return '';
      }     
   } else {   
	   if(startHour.value == 'All' ) {
	     displayErrorMessage("Please select start time hour");
	     highlightTextField(startHour);
	     return '';
	   } else {
	     time =  time  + startHour.value ;
	   }
	   if(startMins.value == 'All' ) {
	     displayErrorMessage("Please select start time minutes");
	     highlightTextField(startMins);
	     return '';
	   } else {
	     time =  time  + ':' + startMins.value + ' ' +  startFormat.value ;
	   }
   }
   
   if(endHour.value == 'All' ) {
     if(endMins.value != 'All' ) {
          displayErrorMessage("Please select end time hour");
          highlightTextField(endHour);
          return '';
     }     
   } 
   if(endHour.value != 'All' &&  endMins.value == 'All' ) {
     displayErrorMessage("Please select end time minutes");
     highlightTextField(endMins);
     return '';
   } 
	 if(endHour.value == "-" && endMins.value == "-" && endFormat.value == "-" ||
			( isNumeric(endHour.value) && isNumeric(endMins.value) && (endFormat.value =="AM" || endFormat.value =="PM") ) )   {
		 if(endHour.value != 'All' &&  endMins.value != 'All' ) {
			 time =  time  + '|'+ endHour.value + ':' + endMins.value + ' ' + endFormat.value ;
		 } else   time =  time  + '| ';
	 } else {
		 displayErrorMessage("Please select an end time or select '--' to continue");
     highlightTextField(endHour);
		 highlightTextField(endMins);
		 highlightTextField(endFormat);
     return '';
	 }
   return time;
}

function removeHighlighting(element) 
{
    if(element.style)
     	element.style.border='';
}

function clearEventField(_form) {
	 removeHighlighting($('eventName'));
	 removeHighlighting($('descp'));
	 removeHighlighting($('categoryId'));
	 removeHighlighting($('category'));
	 removeHighlighting($('fullPrice'));
	 removeHighlighting($('child'));
	 removeHighlighting($('familyPrice'));
	 removeHighlighting($('memFriPrice'));
	 removeHighlighting($('concession'));
	 removeHighlighting($('seniorCitizen'));
	 removeHighlighting($('groupPrice'));
	 if(_form.length) {
	   for(var i=0; i<_form.length; i++)
     	 removeHighlighting(_form[i]);
	 }
	 
    
}
function validateEventFormData(_form){	
   clearMessage();   
   clearEventField(_form);
   if($('eventName').value <=0 ){
	   displayErrorMessage("Please enter event name");
	    highlightTextField($('eventName'));
	    $('eventName').focus();
   }else
   if($('descp').value <= 0){
	   displayErrorMessage("Please enter description");
	   highlightTextField($('descp'));
	   $('descp').focus();
   }else 
   if($('shortDescription').value.length > 75){
	   displayErrorMessage("Short description can not be more then 75 characters.");
	   highlightTextField($('shortDescription'));
	   $('shortDescription').focus();
   }else
   if($('categoryId').value == 0){
   	   displayErrorMessage("Please select category");
   	   highlightTextField($('categoryId'));
   	   $('categoryId').focus();
   } else
   if($('categoryId').value == -1 && ($('category').value <=0 || $('category').value == ' Specify event category') ){
   	   displayErrorMessage("Please enter other category");
   	   highlightTextField($('category'));
   	   $('category').focus();
   } else if(!validateEventPrice(_form)) {
	 return;
   } else if(!validateEventTimingRows()) {
     return;
   } else {
      removeDefaultData();
      _form.method.value="eventDetail";
      _form.submit();   
   }	  
   
}
function backStep(id) {   
	if(id > 0)
	   addVenue_Event(id);
	else  editVenueForm();

}


//Event Detail Submit Changes (AJAX) 
function submitTask(taskId) {
	var description = $('taskComments').value;
	description = trim(description)
	if(description.length <=0) {
		displayErrorMessage("Provide values for changes.");
		return false;
	}
	var entityId = $('entityID').value;
	UserManager.submitTask(description, taskId, entityId, submitTaskHandler);
}

function submitTaskHandler(source) {
	if(null != source) {
		if(source == "error") {
			displayErrorMessage("Error processing your request.");
		} else {
			$('submitChanges').style.display = 'none';
			$('successSubmitChanges').style.display = '';
		}
	}
}
//End
// new layout page changes
var rollImage = new Array();
// find now image
rollImage[0]= new Image(84,38);  // width,height
//rollImage[0].src = "images/find-now-home.jpg";
rollImage[1] = new Image(83,38);
//rollImage[1].src = "images/Find-now_home_rollover.jpg";
// add event venue image
rollImage[2]= new Image(211,30);  // width,height
//rollImage[2].src = "images/add-your-venue-or-events.jpg";
rollImage[3] = new Image(211,30);
//rollImage[3].src = "images/add-your-venue-or-events_rollover.jpg";

rollImage[4]= new Image(84,38);  // width,height
//rollImage[4].src = "images/Find-now.jpg";
rollImage[5] = new Image(83,38);
//rollImage[5].src = "images/Find-now_rollover.jpg";

function swapImage(obj,index){
var cntx = document.getElementById('cntx');
if(cntx!= null)cntx = cntx.value;

rollImage[0].src = cntx+"images/find-now-home.jpg";
rollImage[1].src = cntx+"images/Find-now_home_rollover.jpg";
rollImage[2].src = cntx+"images/add-your-venue-or-events.jpg";
rollImage[3].src = cntx+"images/add-your-venue-or-events_rollover.jpg";
rollImage[4].src = cntx+"images/Find-now.jpg";
rollImage[5].src = cntx+"images/Find-now_rollover.jpg";
obj.src = rollImage[index].src;
    return true;
}

// search method of result.vm

function resetOldValues(_form) {
	_form.locationProvided.value = '1';
	if( _form.sortType.value != '3' )
		_form.sortType.value = '0';
	_form.searchInDescription.value = 'false';
	_form.categoryId.value = '0';
	_form.subCategoryId.value = '0';
	_form.brandCategoryId.value = '0';
	_form.displayFutureEvents.value = 'true';
	_form.displayFutureResultLink.value = 'false';
	_form.pageId.value = '0';
}

var isFromDidYouMean = false;
function didYouMean(searchString, locationString){
   var _form = document.gdp_search_form;
   if( searchString != '')   _form.searchString.value = searchString;
   if( locationString != '') _form.searchLocation.value = locationString;
   isFromDidYouMean = true;
   searchEvents();
}

function searchInDescription() {
     var _form = document.gdp_search_form;
     setSearchCriteria();
     _form.searchInDescription.value = "true";
     _form.submit();
}

function searchExactMatchVenues() {
   var _form = document.gdp_search_form;   
   setSearchCriteria();
  _form.pageId.value="0" ;
  _form.sortType.value = "1";
  _form.method.value="search"; 
  _form.exactMatchVenues.value = "true" ;
  _form.submit();
  submitOK = false;  
} 
function searchExactMatchVenuesMapView() {
   var _form = document.gdp_search_form;   
   setSearchCriteria();
  _form.pageId.value="0" ;
  _form.sortType.value = "1";
  _form.method.value="search"; 
  _form.exactMatchVenues.value = "true" ;
	_form.showAllCategories.value="No";
  _form.submit();
  submitOK = false;  
} 



function showEventDetail(titleId, venueId) {
  var _form = document.gdp_search_form;  
  setSearchCriteria();
  _form.titleId.value=titleId;
  _form.venueId.value=venueId;
  _form.method.value="getEventDetail";
  _form.submit();
}
function showVenue(venueId) {   
    var _form = document.gdp_search_form;
    setSearchCriteria();
   _form.venueId.value=venueId; 
   _form.method.value="getVenue";
   _form.submit();
 }  

function searchEventsWithInc(dayInc) {  

  var _form = document.gdp_search_form;
  setSearchCriteria();
  _form.pageId.value="0";
  _form.dayIncrement.value = dayInc;
  _form.submit();  

}

function searchEventsForCategory(categoryId) {

   var _form = document.gdp_search_form;
   setSearchCriteria();
   _form.pageId.value="0" ;
  _form.categoryId.value=categoryId;
  _form.subCategoryId.value = "0"
  _form.submit();   
  
}

function searchEventsForSubCategory(subCategoryId) {
     var _form = document.gdp_search_form;     
     setSearchCriteria();
     _form.pageId.value="0" ;
     _form.subCategoryId.value = subCategoryId ;     
     _form.submit();   
 } 

  function searchEventsForSubCategoryMapView(subCategoryId,categoryId) {
     var _form = document.gdp_search_form;     
     setSearchCriteria();
     _form.subCategoryId.value = subCategoryId ;   
		 _form.categoryId.value=categoryId;
		 _form.showAllCategories.value="Yes";
		 _form.pageSize.value ="10";
     _form.submit();   
 } 
 
function searchEventsForCategoryMapView(categoryId) {

   var _form = document.gdp_search_form;
   setSearchCriteria();
  _form.categoryId.value=categoryId;
	_form.showAllCategories.value="Yes";
	_form.pageSize.value ="10";
  _form.submit();   
  
}
 
function showPage(page) {            
      var  _form = document.gdp_search_form;
      setSearchCriteria();
      _form.pageId.value=page;      
      _form.submit();
      return true;
   
}
function searchSortBy(sort) {        
      var  _form = document.gdp_search_form;
       setSearchCriteria();
       _form.pageId.value="0" ;
      _form.sortType.value = sort;
      _form.submit();
      return true;
}

function searchLocations(_form) {        
      var  _form = document.gdp_search_form;
      setSearchCriteria();
     _form.method.value="loctions";
     _form.submit();
      return true;
}

function changPageSize(pageSize) {        
	var _form = document.gdp_search_form;
	setSearchCriteria();   
	_form.pageId.value="0" ; 
	_form.pageSize.value = pageSize;
	rememberPref(pageSize);
	_form.submit();
	//return true;
}

function removeSpecialChars(searchString) {
	    var sb = '';
	    var i, c, code;
	    var length = searchString.length;	    
	    for (i = 0; i <length;  i++) {
	        c = searchString.charAt(i);	       
			code = searchString.charCodeAt(i);			
	       if (c == '\\' || c == '+' || c == '!' || c == '('  || c == ')' || c == ':' || c == '#' 
	        || c == '^' || c == '[' || c == ']'  || c == '\"' || c == '{' || c == '}' || c == '<' 
	       	|| c == '~' || c == '*' || c == '?'  || c == '|'  || c == '&' || c == '%' || c == '>'
	       	|| c == '.' || c == '@' || c == '\'' || c == '`' || c == '$' || c == '!' || c == ';' 
			|| c == '=' || c == '/' || c == ','  || code == 45 || code == 95 ) {	       	
             // 45 for '-' and 95 for '_'  =*|\-_)(*&^%$#@!~`<>,.?/"':;
	      } else {
	         sb = sb + c;
	         
	      }
	   }
	   return sb;	    
	    
}

function setWeekendDates(_form) {
     var dateFrom = new Date();  
     var dateTo = new Date();
	 var FRIDAY = 5;
	 var SATURDAY = 6 ;
	 var SUNDAY = 0;	 	 		   
	 
	  var day = dateFrom.getDay();
	  if( day > SUNDAY && day  <= FRIDAY)  {
	     day = FRIDAY - day;
		 dateFrom.setDate(dateFrom.getDate()+day);
		 dateTo.setDate(dateFrom.getDate() + 2);		 
	  } else if(day == SATURDAY) {
    	 dateTo.setDate(dateFrom.getDate() + 1);		 
	  }
	 _form.gdp_whenfrom.value =  dateFrom.print("%d/%m/%Y");   
	 _form.gdp_whento.value =  dateTo.print("%d/%m/%Y");
	 _form.dateCriteria.value = 4;	
	 
}
function setTomorrowDate(_form) {
	var date = new Date();
	var time = date.getTime();
	var when = "";
	var till = "";
	time += Date.DAY; date = new Date(time); 
	when =  date.print("%d/%m/%Y");
	till= when;
	_form.gdp_whenfrom.value = trim(when);
	_form.gdp_whento.value = trim(till);	
	_form.when.value = trim(when);
	_form.till.value = trim(till);
	_form.dateCriteria.value = 3;
}
function setAllDates(gdp_main){
	var val = gdp_main.gdp_when.value;
	val = parseInt(val);
	var date = new Date();
	var time = date.getTime();
	var when = "";
	var till = "";
	when =  date.print("%d/%m/%Y");
	gdp_main.gdp_whenfrom.value = trim(when);
	gdp_main.gdp_whento.value = trim(till);	
	gdp_main.dateCriteria.value = val;	
}
function loadCategoriesCounts(){   
   UserManager.getRefineCategories(false, false, loadCategoriesCountsHandler);
}


function loadCategoriesCountsHandler(source) {
   var obj= $('categoriesCounts');
   if( source == "error" ) {
      //displayErrorMessage("Error processing your request.");	   
   } else   {          
     obj.innerHTML = source;
     var obj= $('paginationBar');
     if(obj) {
        loadResultPaging();  
     } else {     
        setTimeout('loadResultPaging()', 1100);
     }
   }
	
}

function loadCategoriesCountsMap(){
   UserManager.getRefineCategories(false,false, loadCategoriesCountsHandlerMap);
}
function loadCategoriesCountsHandlerMap(source) {
   var obj= $('categoriesCounts');
   if( source == "error" ) {
      //displayErrorMessage("Error processing your request.");	   
   } else   {          
     obj.innerHTML = source;
     var obj= $('paginationBar');
     if(obj) {
        loadResultPaging();  
     } else {     
        setTimeout('loadResultPaging()', 2000);
     }
   }
	adjustView();
}
function loadResultPaging(){
   var obj;
   UserManager.getPagination(function(source) {
       if( source == "error" ) {
 		//     displayErrorMessage("Error processing your request.");	   
		} else   {          
     	  obj = $('paginationBar');
	      if(obj) obj.innerHTML = source;  
	   }
   });

}

function deleteSearchAlert(alertId){
	if(alertId != 0){
		UserManager.deleteSearchAlert(alertId, deleteSearchAlertHandler);
	}else{
		alert('Error deleting alert.');
	}
}
function deleteSearchAlertHandler(source){
	if(source != '0'){
		$('div_sAlert').innerHTML=source;
	}else{
		alert('Error deleting alert.');
	}
}

function setSaveSearchAlert(str){
	var obj = $('search_alert');
	obj.innerHTML=str;
	obj.style.display='';
}
function setSearchAlert(email){
	
	if( $('wozzon_header_logStatus').innerHTML.indexOf('logout(1)') == -1){
		if(!$('chk_terms').checked){
			alert('Please accept woZZon Terms & Conditions');
			$('chk_terms').focus();
			return;
		}
	}
	
	if(email && "" != email && checkEmail(email)){
		var searchUrl = alertSearchLink;/*document.location.href;*/
		var sLabel = $('lb_search').innerHTML;
		UserManager.setSearchAlert(email, sLabel, searchUrl, setSearchAlertHandler);
		
	}else{
		$('div_alert').style.display='';
	}
}
function searchAlertNewUser(alertEmail, receiveEmail){
	if(alertEmail && alertEmail != ""){
	UserManager.searchAlertNewUser(alertEmail, receiveEmail, searchAlertNewUserHandler);
	}else{
		alert('Alert email is empty');
	}
}
function searchAlertNewUserHandler(source){
	if(source == 'error'){
		alert('error creating new account');
	}else{
		hideDivs('save_search_alert');
		$('response_msg').innerHTML = 'New account created, Welcome email has sent.'
		showDivs('search_saved')
	}
}
function setAlertMsg(msg){
var alrt_msg = $('alrt_msg');
alrt_msg.innerHTML=msg;
showDivs('div_alert');

}

function setSearchAlertHandler(source){
	
	var obj_save =$('save_search_alert');
	var search_saved =$('search_saved');
	var alrt_eml = $('alert_email');
	var login_form =$('login_form');
	
	if(source == '1'){//success
	obj_save.style.display='none';
	search_saved.style.display='';
	
	if(login_form.login_email.value != alrt_eml.value) {
		login_form.login_email.value = alrt_eml.value;
		login_form.login_password.value='';
	}
	
	}else if(source == '2'){//Exception occurs
		
		setAlertMsg('Error processing request');
	}else if(source == '0')
	{//wozzon user not found
		searchAlertNewUser(alrt_eml.value, $('recv_eml').checked);
		//setAlertMsg('Please enter a valid email address');
	}
	alrt_eml.value='';
	$('chk_terms').checked='';
	$('recv_eml').checked='checked';
	
}

function trimToDisplay(txt, limit){
	if( txt == null) return "";
	if(txt.length > limit){
		return txt.substring(0,limit) + '..';
	}else{
		return txt;
	}
}
function checkSearchSection(searchObj, locObj){

	if(searchObj.value == searchNameText){
		searchObj.style.color='#999999';
	}
	
	if(searchObj.value== '')
	{
		searchObj.style.color='#999999';
		searchObj.value=searchNameText;
	}

	if(locObj.value == '')
	{	
		locObj.style.color='#000000';
	}else{
		locObj.style.color='#000000';
	}

}
if (typeof(WebToolKit) == "undefined") {
	var WebToolKit = {};
};

WebToolKit.utf8 = {

	encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";

		for (var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
		}

		return utftext;
	},

	decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
		while ( i < utftext.length ) {
			c = utftext.charCodeAt(i);
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
		}
		return string;
	}

};

if (typeof(String.prototype.utf8encode) == "undefined") {
	String.prototype.utf8encode = function () {
		return WebToolKit.utf8.encode(this);
	};
};

if (typeof(String.prototype.utf8decode) == "undefined") {
	String.prototype.utf8decode = function () {
		return WebToolKit.utf8.decode(this);
	};
};

// JavaScript Document( Created By Ammar )

// **************************** Validation Scripts **************************************************//
var div = 'editUserDiv';

function myWozzonEditDetails() {
	var frmName = $('myWozzonDetailsEdit');
	var nickName = frmName.nickName.value;
	var email = frmName.email.value;
	var postCode = frmName.postcode.value;
	var phone = frmName.phone.value;
	var password = frmName.password.value;
	var oldPassword = frmName.oldPassword.value;
	var rePassword = frmName.reNewPassword.value;
	var newEmail = frmName.newEmail.value;
	var retypeNewEmail = frmName.retypeNewEmail.value;	
	
	postCode = trim(postCode);
	phone = trim(phone);
	nickName = trim(nickName);
	email = trim(email);
	oldPassword = trim(oldPassword);
	rePassword = trim(rePassword);
	newEmail = trim(newEmail);
	retypeNewEmail = trim(retypeNewEmail);
	
	if(nickName.length <= 0) {
		displayEntityErrorMessage(div, "Please provide nick name.");
		return false;
	}
	else if($('nickNameAlreadyExist').value == "1") {
		displayEntityErrorMessage(div, "This nickname is already chosen by another user. Please choose another nickname");
		return false;
	}
	else if(phone.length <= 0 && !validateNumber(phone)){
		displayEntityErrorMessage(div, "Characters in the phone number field need to be numeric.");
		return false;
	}
	else if($('emailAlreadyExist').value == "1") {
		displayEntityErrorMessage(div, "Email already exists.");
		return false;
	}
	else if(newEmail.length > 0 ) {
		if(checkEmail(newEmail)) {
			if(retypeNewEmail.length > 0) {
				if(checkEmail(retypeNewEmail)) {
					if(newEmail == retypeNewEmail) {
						frmName.email.value = newEmail;
					}
					else {
						displayEntityErrorMessage(div, "New email and retyped email addresses do not match.");
						return false;
					}
				} else {
					displayEntityErrorMessage(div, "Please provide a valid retyped email address");
					return false;
				}
			}
		} else {
			displayEntityErrorMessage(div, "Please provide a valid new email address");
			return false;
		}
	}	
	else if($('chkOtherInterest').checked && $('otherInterest').value.length < 1 ) {
		displayEntityErrorMessage(div, "Either provide other interests or uncheck the 'Other' checkbox");
		return false;
	} 
	else if(!$('chkOtherInterest').checked) {
		$('otherInterest').value = '';
	}
	 if(password.length > 0) {
		if(oldPassword.length > 0) {
		   if(rePassword.length > 0) {
			   if(password == rePassword) {
			   } else {
				    displayEntityErrorMessage(div, "New password doesn't matches with the re-typed password");
			   		return false;
			   }
		   } else {
			   displayEntityErrorMessage(div, "Please re type the new password");
			   return false;
		   }
		} else {
			displayEntityErrorMessage(div, "Please provide value for old password.");
			return false;
		}
	}
	
	if($('receiveEmailCheckBox').checked){
		$('receiveEmail').value = 'N';
	}else {
		$('receiveEmail').value = 'Y';
	}
	
	document.myWozzonDetailsEdit.submit();
}

function clearErrorMsg() {
	displayEntityErrorMessage(div, "");	
}
// **************************** End Validation Scripts **************************************************//




//**************************************** Ajax Scripts *************************************************//

function checkNickName(str, oldNickName) {
	var nickName = trim(str);
	if(null != nickName && nickName.length > 0 && nickName != oldNickName )
		UserManager.checkNickName(nickName, checkNickNameHandler);
}

function checkNickNameHandler(source) {
	var save = $('btnSave');
	if(null != source) {
		if(source == "error")
			displayEntityErrorMessage(div, "Error processing request for checking availability of nick name.");
		else if(source == "Exists") {
			displayEntityErrorMessage(div, "This nickname is already chosen by another user. Please choose another nickname");
			$('nickNameAlreadyExist').value = "1";
			save.disabled = true;
		} else {
			$('nickNameAlreadyExist').value = "0";
			save.disabled = false;
		}
	}
}

function checkEmailAvailability(str) {
	var frmName = $('myWozzonDetailsEdit');
	var newEmail = frmName.newEmail.value;
	var retypeNewEmail = frmName.retypeNewEmail.value;
	
	newEmail = trim(newEmail)
	retypeNewEmail = trim(retypeNewEmail)
	
	if(newEmail.length > 0 && retypeNewEmail.length > 0 
	   && checkEmail(newEmail) && newEmail == retypeNewEmail) {
		
		UserManager.checkEmailAvailability(newEmail, checkEmailAvailabilityHandler)
		
	}
}

function checkEmailAvailabilityHandler(source) {
	if(null != source) {
		if(source == "error")
			displayEntityErrorMessage(div, "Error processing request for checking availability of email.");
		else if(source == "Exists") {
			displayEntityErrorMessage(div, "This email is already chosen by another user. Please choose another email");
			//$('emailExists').innerHTML = "Email already exists, please retry!";
			//$('emailExists').style.display = ''
			$('emailAlreadyExist').value = "1";
		} else {
			$('emailAlreadyExist').value = "0";
			//$('emailExists').style.display = 'none'
		}
	}
}

function updateUserInfo(email) {
    var token= 6;
	var a= readCookie("wozzonuser");
	if(a && email) {
	    UserManager.getUserToken(email, function(source) {
        if(source != "error" && source != "invalid" )
            if(source.length > token) {
                remember(email,source.substr(token));
            }
        });	   
	}  
}
//**************************************** End Ajax Scripts *********************************************//
/*CALENDAR.JS START*/
// $Id: calendar.js,v 1.2 2007/04/12 05:43:23 mahmed Exp $

/** The Calendar object constructor. */
Calendar = function (firstDayOfWeek, dateStr, onSelected, onClose) {
	// member variables
	this.activeDiv = null;
	this.currentDateEl = null;
	this.getDateStatus = null;
	this.getDateToolTip = null;
	this.getDateText = null;
	this.timeout = null;
	this.onSelected = onSelected || null;
	this.onClose = onClose || null;
	this.dragging = false;
	this.hidden = false;
	this.minYear = 1970;
	this.maxYear = 2050;
	this.dateFormat = Calendar._TT["DEF_DATE_FORMAT"];
	this.ttDateFormat = Calendar._TT["TT_DATE_FORMAT"];
	this.isPopup = true;
	this.weekNumbers = true;
	this.firstDayOfWeek = typeof firstDayOfWeek == "number" ? firstDayOfWeek : Calendar._FD; // 0 for Sunday, 1 for Monday, etc.
	this.showsOtherMonths = false;
	this.dateStr = dateStr;
	this.ar_days = null;
	this.showsTime = false;
	this.time24 = true;
	this.yearStep = 2;
	this.hiliteToday = true;
	this.multiple = null;
	// HTML elements
	this.table = null;
	this.element = null;
	this.tbody = null;
	this.firstdayname = null;
	// Combo boxes
	this.monthsCombo = null;
	this.yearsCombo = null;
	this.hilitedMonth = null;
	this.activeMonth = null;
	this.hilitedYear = null;
	this.activeYear = null;
	// Information
	this.dateClicked = false;

	// one-time initializations
	if (typeof Calendar._SDN == "undefined") {
		// table of short day names
		if (typeof Calendar._SDN_len == "undefined")
			Calendar._SDN_len = 3;
		var ar = new Array();
		for (var i = 8; i > 0;) {
			ar[--i] = Calendar._DN[i].substr(0, Calendar._SDN_len);
		}
		Calendar._SDN = ar;
		// table of short month names
		if (typeof Calendar._SMN_len == "undefined")
			Calendar._SMN_len = 3;
		ar = new Array();
		for (var i = 12; i > 0;) {
			ar[--i] = Calendar._MN[i].substr(0, Calendar._SMN_len);
		}
		Calendar._SMN = ar;
	}
};

// ** constants

/// "static", needed for event handlers.
Calendar._C = null;

/// detect a special case of "web browser"
Calendar.is_ie = ( /msie/i.test(navigator.userAgent) &&
		   !/opera/i.test(navigator.userAgent) );

Calendar.is_ie5 = ( Calendar.is_ie && /msie 5\.0/i.test(navigator.userAgent) );

Calendar.is_ie7 = ( Calendar.is_ie && /msie 7\.0/i.test(navigator.userAgent) );

/// detect Opera browser
Calendar.is_opera = /opera/i.test(navigator.userAgent);

/// detect KHTML-based browsers
Calendar.is_khtml = /Konqueror|Safari|KHTML/i.test(navigator.userAgent);

// BEGIN: UTILITY FUNCTIONS; beware that these might be moved into a separate
//        library, at some point.

Calendar.getAbsolutePos = function(el) {
	var SL = 0, ST = 0;
	var is_div = /^div$/i.test(el.tagName);
	if (is_div && el.scrollLeft)
		SL = el.scrollLeft;
	if (is_div && el.scrollTop)
		ST = el.scrollTop;
	var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
	if (el.offsetParent) {
		var tmp = this.getAbsolutePos(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}
	return r;
};
Calendar.eventTimingRow = function(el) {	
	if(Calendar.is_ie7  && el.name){	
     	var W_FROM = el.name.indexOf("whenfrom_");
   	    var W_TO =  el.name.indexOf("whento_");	
	    return (W_FROM != -1 || W_TO != -1);				  
	} else return false;
	
};
Calendar.lowerSearchForm = function(el) {	
	if(Calendar.is_ie7  && el.name){	     	
		var L_FROM = el.name.indexOf("l_gdp_whenfrom");
   	    var L_TO =  el.name.indexOf("l_gdp_whento");	
		 return (L_FROM != -1 || L_TO != -1);
	 } else return false;
	
};

Calendar.newSearchForm = function(el) {	
	if(Calendar.is_ie7  && el.name){	     			
		if (Calendar.lowerSearchForm(el))
		      return true;
			  
		var U_FROM = el.name.indexOf("gdp_whenfrom");
   	    var U_TO =  el.name.indexOf("gdp_whento");		  
	    return ( ( ! $("l_gdp_whenfrom") ) && U_FROM != -1 || U_TO != -1 );				  
	} else return false;
	
};



Calendar.isRelated = function (el, evt) {
	var related = evt.relatedTarget;
	if (!related) {
		var type = evt.type;
		if (type == "mouseover") {
			related = evt.fromElement;
		} else if (type == "mouseout") {
			related = evt.toElement;
		}
	}
	while (related) {
		if (related == el) {
			return true;
		}
		related = related.parentNode;
	}
	return false;
};

Calendar.removeClass = function(el, className) {
	if (!(el && el.className)) {
		return;
	}
	var cls = el.className.split(" ");
	var ar = new Array();
	for (var i = cls.length; i > 0;) {
		if (cls[--i] != className) {
			ar[ar.length] = cls[i];
		}
	}
	el.className = ar.join(" ");
};

Calendar.addClass = function(el, className) {
	Calendar.removeClass(el, className);
	el.className += " " + className;
};

// FIXME: the following 2 functions totally suck, are useless and should be replaced immediately.
Calendar.getElement = function(ev) {
	var f = Calendar.is_ie ? window.event.srcElement : ev.currentTarget;
	while (f.nodeType != 1 || /^div$/i.test(f.tagName))
		f = f.parentNode;
	return f;
};

Calendar.getTargetElement = function(ev) {
	var f = Calendar.is_ie ? window.event.srcElement : ev.target;
	while (f.nodeType != 1)
		f = f.parentNode;
	return f;
};

Calendar.stopEvent = function(ev) {
	ev || (ev = window.event);
	if (Calendar.is_ie) {
		ev.cancelBubble = true;
		ev.returnValue = false;
	} else {
		ev.preventDefault();
		ev.stopPropagation();
	}
	return false;
};

Calendar.addEvent = function(el, evname, func) {
	if (el.attachEvent) { // IE
		el.attachEvent("on" + evname, func);
	} else if (el.addEventListener) { // Gecko / W3C
		el.addEventListener(evname, func, true);
	} else {
		el["on" + evname] = func;
	}
};

Calendar.removeEvent = function(el, evname, func) {
	if (el.detachEvent) { // IE
		el.detachEvent("on" + evname, func);
	} else if (el.removeEventListener) { // Gecko / W3C
		el.removeEventListener(evname, func, true);
	} else {
		el["on" + evname] = null;
	}
};

Calendar.createElement = function(type, parent) {
	var el = null;
	if (document.createElementNS) {
		// use the XHTML namespace; IE won't normally get here unless
		// _they_ "fix" the DOM2 implementation.
		el = document.createElementNS("http://www.w3.org/1999/xhtml", type);
	} else {
		el = document.createElement(type);
	}
	if (typeof parent != "undefined") {
		parent.appendChild(el);
	}
	return el;
};

// END: UTILITY FUNCTIONS

// BEGIN: CALENDAR STATIC FUNCTIONS

/** Internal -- adds a set of events to make some element behave like a button. */
Calendar._add_evs = function(el) {
	with (Calendar) {
		addEvent(el, "mouseover", dayMouseOver);
		addEvent(el, "mousedown", dayMouseDown);
		addEvent(el, "mouseout", dayMouseOut);
		if (is_ie) {
			addEvent(el, "dblclick", dayMouseDblClick);
			el.setAttribute("unselectable", true);
		}
	}
};

Calendar.findMonth = function(el) {
	if (typeof el.month != "undefined") {
		return el;
	} else if (typeof el.parentNode.month != "undefined") {
		return el.parentNode;
	}
	return null;
};

Calendar.findYear = function(el) {
	if (typeof el.year != "undefined") {
		return el;
	} else if (typeof el.parentNode.year != "undefined") {
		return el.parentNode;
	}
	return null;
};

Calendar.showMonthsCombo = function () {
	var cal = Calendar._C;
	if (!cal) {
		return false;
	}
	var cal = cal;
	var cd = cal.activeDiv;
	var mc = cal.monthsCombo;
	if (cal.hilitedMonth) {
		Calendar.removeClass(cal.hilitedMonth, "hilite");
	}
	if (cal.activeMonth) {
		Calendar.removeClass(cal.activeMonth, "active");
	}
	var mon = cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()];
	Calendar.addClass(mon, "active");
	cal.activeMonth = mon;
	var s = mc.style;
	s.display = "block";
	if (cd.navtype < 0)
		s.left = cd.offsetLeft + "px";
	else {
		var mcw = mc.offsetWidth;
		if (typeof mcw == "undefined")
			// Konqueror brain-dead techniques
			mcw = 50;
		s.left = (cd.offsetLeft + cd.offsetWidth - mcw) + "px";
	}
	s.top = (cd.offsetTop + cd.offsetHeight) + "px";
};

Calendar.showYearsCombo = function (fwd) {

	var cal = Calendar._C;
	if (!cal) {
		return false;
	}
	var cal = cal;
	var cd = cal.activeDiv;
	var yc = cal.yearsCombo;
	if (cal.hilitedYear) {
		Calendar.removeClass(cal.hilitedYear, "hilite");
	}
	if (cal.activeYear) {
		Calendar.removeClass(cal.activeYear, "active");
	}
	cal.activeYear = null;
	var Y = cal.date.getFullYear() + (fwd ? 1 : -1);
	var yr = yc.firstChild;
	var show = false;
	for (var i = 12; i > 0; --i) {
		if (Y >= cal.minYear && Y <= cal.maxYear) {
			yr.innerHTML = Y;
			yr.year = Y;
			yr.style.display = "block";
			show = true;
		} else {
			yr.style.display = "none";
		}
		yr = yr.nextSibling;
		Y += fwd ? cal.yearStep : -cal.yearStep;
	}
	if (show) {
		var s = yc.style;
		s.display = "block";
		if (cd.navtype < 0)
			s.left = cd.offsetLeft + "px";
		else {
			var ycw = yc.offsetWidth;
			if (typeof ycw == "undefined")
				// Konqueror brain-dead techniques
				ycw = 50;
			s.left = (cd.offsetLeft + cd.offsetWidth - ycw) + "px";
		}
		s.top = (cd.offsetTop + cd.offsetHeight) + "px";
	}
};

// event handlers

Calendar.tableMouseUp = function(ev) {
	var cal = Calendar._C;
	if (!cal) {
		return false;
	}
	if (cal.timeout) {
		clearTimeout(cal.timeout);
	}
	var el = cal.activeDiv;
	if (!el) {
		return false;
	}
	var target = Calendar.getTargetElement(ev);
	ev || (ev = window.event);
	Calendar.removeClass(el, "active");
	if (target == el || target.parentNode == el) {
		Calendar.cellClick(el, ev);
	}
	var mon = Calendar.findMonth(target);
	var date = null;
	if (mon) {
		date = new Date(cal.date);
		if (mon.month != date.getMonth()) {
			date.setMonth(mon.month);
			cal.setDate(date);
			cal.dateClicked = false;
			cal.callHandler();
		}
	} else {
		var year = Calendar.findYear(target);
		if (year) {
			date = new Date(cal.date);
			if (year.year != date.getFullYear()) {
				date.setFullYear(year.year);
				cal.setDate(date);
				cal.dateClicked = false;
				cal.callHandler();
			}
		}
	}
	with (Calendar) {
		removeEvent(document, "mouseup", tableMouseUp);
		removeEvent(document, "mouseover", tableMouseOver);
		removeEvent(document, "mousemove", tableMouseOver);
		cal._hideCombos();
		_C = null;
		return stopEvent(ev);
	}
};

Calendar.tableMouseOver = function (ev) {
	var cal = Calendar._C;
	if (!cal) {
		return;
	}
	var el = cal.activeDiv;
	var target = Calendar.getTargetElement(ev);
	if (target == el || target.parentNode == el) {
		Calendar.addClass(el, "hilite active");
		Calendar.addClass(el.parentNode, "rowhilite");
	} else {
		if (typeof el.navtype == "undefined" || (el.navtype != 50 && (el.navtype == 0 || Math.abs(el.navtype) > 2)))
			Calendar.removeClass(el, "active");
		Calendar.removeClass(el, "hilite");
		Calendar.removeClass(el.parentNode, "rowhilite");
	}
	ev || (ev = window.event);
	if (el.navtype == 50 && target != el) {
		var pos = Calendar.getAbsolutePos(el);
		var w = el.offsetWidth;
		var x = ev.clientX;
		var dx;
		var decrease = true;
		if (x > pos.x + w) {
			dx = x - pos.x - w;
			decrease = false;
		} else
			dx = pos.x - x;

		if (dx < 0) dx = 0;
		var range = el._range;
		var current = el._current;
		var count = Math.floor(dx / 10) % range.length;
		for (var i = range.length; --i >= 0;)
			if (range[i] == current)
				break;
		while (count-- > 0)
			if (decrease) {
				if (--i < 0)
					i = range.length - 1;
			} else if ( ++i >= range.length )
				i = 0;
		var newval = range[i];
		el.innerHTML = newval;

		cal.onUpdateTime();
	}
	var mon = Calendar.findMonth(target);
	if (mon) {
		if (mon.month != cal.date.getMonth()) {
			if (cal.hilitedMonth) {
				Calendar.removeClass(cal.hilitedMonth, "hilite");
			}
			Calendar.addClass(mon, "hilite");
			cal.hilitedMonth = mon;
		} else if (cal.hilitedMonth) {
			Calendar.removeClass(cal.hilitedMonth, "hilite");
		}
	} else {
		if (cal.hilitedMonth) {
			Calendar.removeClass(cal.hilitedMonth, "hilite");
		}
		var year = Calendar.findYear(target);
		if (year) {
			if (year.year != cal.date.getFullYear()) {
				if (cal.hilitedYear) {
					Calendar.removeClass(cal.hilitedYear, "hilite");
				}
				Calendar.addClass(year, "hilite");
				cal.hilitedYear = year;
			} else if (cal.hilitedYear) {
				Calendar.removeClass(cal.hilitedYear, "hilite");
			}
		} else if (cal.hilitedYear) {
			Calendar.removeClass(cal.hilitedYear, "hilite");
		}
	}
	return Calendar.stopEvent(ev);
};

Calendar.tableMouseDown = function (ev) {
	if (Calendar.getTargetElement(ev) == Calendar.getElement(ev)) {
		return Calendar.stopEvent(ev);
	}
};

Calendar.calDragIt = function (ev) {
	var cal = Calendar._C;
	if (!(cal && cal.dragging)) {
		return false;
	}
	var posX;
	var posY;
	if (Calendar.is_ie) {
		posY = window.event.clientY + document.body.scrollTop;
		posX = window.event.clientX + document.body.scrollLeft;
	} else {
		posX = ev.pageX;
		posY = ev.pageY;
	}
	cal.hideShowCovered();
	var st = cal.element.style;
	st.left = (posX - cal.xOffs) + "px";
	st.top = (posY - cal.yOffs) + "px";
	return Calendar.stopEvent(ev);
};

Calendar.calDragEnd = function (ev) {
	var cal = Calendar._C;
	if (!cal) {
		return false;
	}
	cal.dragging = false;
	with (Calendar) {
		removeEvent(document, "mousemove", calDragIt);
		removeEvent(document, "mouseup", calDragEnd);
		tableMouseUp(ev);
	}
	cal.hideShowCovered();
};

Calendar.dayMouseDown = function(ev) {
	var el = Calendar.getElement(ev);
	if (el.disabled) {
		return false;
	}
	var cal = el.calendar;
	cal.activeDiv = el;
	Calendar._C = cal;
	if (el.navtype != 300) with (Calendar) {
		if (el.navtype == 50) {
			el._current = el.innerHTML;
			addEvent(document, "mousemove", tableMouseOver);
		} else
			addEvent(document, Calendar.is_ie5 ? "mousemove" : "mouseover", tableMouseOver);
		addClass(el, "hilite active");
		addEvent(document, "mouseup", tableMouseUp);
	} else if (cal.isPopup) {
		cal._dragStart(ev);
	}
	if (el.navtype == -1 || el.navtype == 1) {
		if (cal.timeout) clearTimeout(cal.timeout);
		cal.timeout = setTimeout("Calendar.showMonthsCombo()", 250);
	} else if (el.navtype == -2 || el.navtype == 2) {
		if (cal.timeout) clearTimeout(cal.timeout);
		cal.timeout = setTimeout((el.navtype > 0) ? "Calendar.showYearsCombo(true)" : "Calendar.showYearsCombo(false)", 250);
	} else {
		cal.timeout = null;
	}
	return Calendar.stopEvent(ev);
};

Calendar.dayMouseDblClick = function(ev) {
	Calendar.cellClick(Calendar.getElement(ev), ev || window.event);
	if (Calendar.is_ie) {
		document.selection.empty();
	}
};

Calendar.dayMouseOver = function(ev) {
	var el = Calendar.getElement(ev);
	if (Calendar.isRelated(el, ev) || Calendar._C || el.disabled) {
		return false;
	}
	if (el.ttip) {
		if (el.ttip.substr(0, 1) == "_") {
			el.ttip = el.caldate.print(el.calendar.ttDateFormat) + el.ttip.substr(1);
		}
		el.calendar.tooltips.innerHTML = el.ttip;
	}
	if (el.navtype != 300) {
		Calendar.addClass(el, "hilite");
		if (el.caldate) {
			//Calendar.addClass(el.parentNode, "rowhilite");
		}
	}
	return Calendar.stopEvent(ev);
};

Calendar.dayMouseOut = function(ev) {
	with (Calendar) {
		var el = getElement(ev);
		if (isRelated(el, ev) || _C || el.disabled)
			return false;
		removeClass(el, "hilite");
		if (el.caldate)
			removeClass(el.parentNode, "rowhilite");
		if (el.calendar)
			el.calendar.tooltips.innerHTML = _TT["SEL_DATE"];
		return stopEvent(ev);
	}
};

/**
 *  A generic "click" handler :) handles all types of buttons defined in this
 *  calendar.
 */
Calendar.cellClick = function(el, ev) {
	var cal = el.calendar;
	var closing = false;
	var newdate = false;
	var date = null;
	if (typeof el.navtype == "undefined") {
		////edition of canceling if written below/////
//		if (cal.currentDateEl ) {
			if (cal.currentDateEl )  // this line is inserted by 
				Calendar.removeClass(cal.currentDateEl, "selected");
			Calendar.addClass(el, "selected");
			closing = (cal.currentDateEl == el);
			if (!closing) {
				cal.currentDateEl = el;
			}
//		}
		//////////end edition/////////

		cal.date.setDateOnly(el.caldate);
		date = cal.date;
		var other_month = !(cal.dateClicked = !el.otherMonth);
		if (!other_month && !cal.currentDateEl)
			cal._toggleMultipleDate(new Date(date));
		else
			newdate = !el.disabled;
		// a date was clicked
		if (other_month)
			cal._init(cal.firstDayOfWeek, date);
	} else {
		if (el.navtype == 200) {
			Calendar.removeClass(el, "hilite");
			cal.callCloseHandler();
			return;
		}
		date = new Date(cal.date);
		if (el.navtype == 0)
			date.setDateOnly(new Date()); // TODAY
		// unless "today" was clicked, we assume no date was clicked so
		// the selected handler will know not to close the calenar when
		// in single-click mode.
		// cal.dateClicked = (el.navtype == 0);
		cal.dateClicked = false;
		var year = date.getFullYear();
		var mon = date.getMonth();
		function setMonth(m) {
			var day = date.getDate();
			var max = date.getMonthDays(m);
			if (day > max) {
				date.setDate(max);
			}
			date.setMonth(m);
		};
		switch (el.navtype) {
		    case 400:
			Calendar.removeClass(el, "hilite");
			var text = Calendar._TT["ABOUT"];
			if (typeof text != "undefined") {
				text += cal.showsTime ? Calendar._TT["ABOUT_TIME"] : "";
			} else {
				// FIXME: this should be removed as soon as lang files get updated!
				text = "Help and about box text is not translated into this language.\n" +
					"If you know this language and you feel generous please update\n" +
					"the corresponding file in \"lang\" subdir to match calendar-en.js\n" +
					"and send it back to <mihai_bazon@yahoo.com> to get it into the distribution  ;-)\n\n" +
					"Thank you!\n" +
					"http://dynarch.com/mishoo/calendar.epl\n";
			}
			alert(text);
			return;
		    case -2:
			if (year > cal.minYear) {
				date.setFullYear(year - 1);
			}
			break;
		    case -1:
			if (mon > 0) {
				setMonth(mon - 1);
			} else if (year-- > cal.minYear) {
				date.setFullYear(year);
				setMonth(11);
			}
			break;
		    case 1:
			if (mon < 11) {
				setMonth(mon + 1);
			} else if (year < cal.maxYear) {
				date.setFullYear(year + 1);
				setMonth(0);
			}
			break;
		    case 2:
			if (year < cal.maxYear) {
				date.setFullYear(year + 1);
			}
			break;
		    case 100:
			cal.setFirstDayOfWeek(el.fdow);
			return;
		    case 50:
			var range = el._range;
			var current = el.innerHTML;
			for (var i = range.length; --i >= 0;)
				if (range[i] == current)
					break;
			if (ev && ev.shiftKey) {
				if (--i < 0)
					i = range.length - 1;
			} else if ( ++i >= range.length )
				i = 0;
			var newval = range[i];
			el.innerHTML = newval;
			cal.onUpdateTime();
			return;
		    case 0:
			// TODAY will bring us here
			cal.dateClicked = true;		////Pixsense's Change
						
			if ((typeof cal.getDateStatus == "function") &&
			    cal.getDateStatus(date, date.getFullYear(), date.getMonth(), date.getDate())) {
				return false;
			}
			break;
		}
		if (!date.equalsTo(cal.date)) {
			cal.setDate(date);
			newdate = true;
		} else if (el.navtype == 0)
			newdate = closing = true;
	}
	if (newdate) {
		ev && cal.callHandler();
	}
	if (closing) {
		Calendar.removeClass(el, "hilite");
		ev && cal.callCloseHandler();
	}
};

// END: CALENDAR STATIC FUNCTIONS

// BEGIN: CALENDAR OBJECT FUNCTIONS

/**
 *  This function creates the calendar inside the given parent.  If _par is
 *  null than it creates a popup calendar inside the BODY element.  If _par is
 *  an element, be it BODY, then it creates a non-popup calendar (still
 *  hidden).  Some properties need to be set before calling this function.
 */
Calendar.prototype.create = function (_par) {
	var parent = null;
	if (! _par) {
		// default parent is the document body, in which case we create
		// a popup calendar.
		parent = document.getElementsByTagName("body")[0];
		this.isPopup = true;
	} else {
		parent = _par;
		this.isPopup = false;
	}
	this.date = this.dateStr ? new Date(this.dateStr) : new Date();

	var table = Calendar.createElement("table");
	this.table = table;
	table.cellSpacing = 0;
	table.cellPadding = 0;
	table.calendar = this;
	Calendar.addEvent(table, "mousedown", Calendar.tableMouseDown);

	var div = Calendar.createElement("div");
	this.element = div;
	div.className = "calendar";
	if (this.isPopup) {
		div.style.position = "absolute";
		div.style.display = "none";
		//div.style.zIndex = "20";
	}
	div.appendChild(table);

	var thead = Calendar.createElement("thead", table);
	///Change////
	this.thead = thead;
        /////change end/////
	var cell = null;
	var row = null;

	var cal = this;
	var hh = function (text, cs, navtype) {
		cell = Calendar.createElement("td", row);
		cell.colSpan = cs;
		cell.className = "calbutton";
		if (navtype != 0 && Math.abs(navtype) <= 2)
			cell.className += " nav";
		Calendar._add_evs(cell);
		cell.calendar = cal;
		cell.navtype = navtype;
		cell.innerHTML = "<div unselectable='on'>" + text + "</div>";
		return cell;
	};

	row = Calendar.createElement("tr", thead);
	// Change/////
	var title_length = 6;
	///chg end/////
	(this.isPopup) && --title_length;
	//(this.weekNumbers) && ++title_length;
	this.weekNumbers = false;
	
	///  Change////
//	hh("?", 1, 400).ttip = Calendar._TT["INFO"];
	///Change End////////
	this.title = hh("", 7, 300);
	this.title.className = "ctitle";
	if (this.isPopup) {
		this.title.ttip = Calendar._TT["DRAG_TO_MOVE"];
		this.title.style.cursor = "move";
		hh("&#x00d7;", 1, 200).ttip = Calendar._TT["CLOSE"];
	}

	row = Calendar.createElement("tr", thead);
	row.className = "headrow";
	////  Change///////////
//	this._nav_py = hh("&#x00ab;", 1, -2);
//	this._nav_py.ttip = Calendar._TT["PREV_YEAR"];
	/////Change end///////////////
	this._nav_pm = hh("&#x2039;", 1, -1);
	this._nav_pm.ttip = Calendar._TT["PREV_MONTH"];

	////  Change///////////
	this._nav_now = hh(Calendar._TT["TODAY"], this.weekNumbers ? 6 : 5, 0);  ///originally 6 is 4 and 5 is 3
	/////Change end///////////////
	this._nav_now.ttip = Calendar._TT["GO_TODAY"];

	this._nav_nm = hh("&#x203a;", 1, 1);
	this._nav_nm.ttip = Calendar._TT["NEXT_MONTH"];
	////  Change///////////
//	this._nav_ny = hh("&#x00bb;", 1, 2);
//	this._nav_ny.ttip = Calendar._TT["NEXT_YEAR"];
	/////Change end///////////////
	// day names
	row = Calendar.createElement("tr", thead);
	row.className = "daynames";
	
	if (this.weekNumbers) {
		cell = Calendar.createElement("td", row);
		cell.className = "name wn";
		cell.innerHTML = Calendar._TT["WK"];
	}
	
	for (var i = 7; i > 0; --i) {
		cell = Calendar.createElement("td", row);
		if (!i) {
			cell.navtype = 100;
			cell.calendar = this;
			Calendar._add_evs(cell);
		}
	}
	this.firstdayname = (this.weekNumbers) ? row.firstChild.nextSibling : row.firstChild;
	this._displayWeekdays();

	var tbody = Calendar.createElement("tbody", table);
	this.tbody = tbody;

	for (i  = 6; i > 0; --i) {
		row = Calendar.createElement("tr", tbody);
		if (this.weekNumbers) {
			cell = Calendar.createElement("td", row);
		}
		for (var j = 7; j > 0; --j) {
			cell = Calendar.createElement("td", row);
			cell.calendar = this;
			Calendar._add_evs(cell);
		}
	}

	if (this.showsTime) {
		row = Calendar.createElement("tr", tbody);
		row.className = "time";

		cell = Calendar.createElement("td", row);
		cell.className = "time";
		cell.colSpan = 2;
		cell.innerHTML = Calendar._TT["TIME"] || "&nbsp;";

		cell = Calendar.createElement("td", row);
		cell.className = "time";
		cell.colSpan = this.weekNumbers ? 4 : 3;

		(function(){
			function makeTimePart(className, init, range_start, range_end) {
				var part = Calendar.createElement("span", cell);
				part.className = className;
				part.innerHTML = init;
				part.calendar = cal;
				part.ttip = Calendar._TT["TIME_PART"];
				part.navtype = 50;
				part._range = [];
				if (typeof range_start != "number")
					part._range = range_start;
				else {
					for (var i = range_start; i <= range_end; ++i) {
						var txt;
						if (i < 10 && range_end >= 10) txt = '0' + i;
						else txt = '' + i;
						part._range[part._range.length] = txt;
					}
				}
				Calendar._add_evs(part);
				return part;
			};
			var hrs = cal.date.getHours();
			var mins = cal.date.getMinutes();
			var t12 = !cal.time24;
			var pm = (hrs > 12);
			if (t12 && pm) hrs -= 12;
			var H = makeTimePart("hour", hrs, t12 ? 1 : 0, t12 ? 12 : 23);
			var span = Calendar.createElement("span", cell);
			span.innerHTML = ":";
			span.className = "colon";
			var M = makeTimePart("minute", mins, 0, 59);
			var AP = null;
			cell = Calendar.createElement("td", row);
			cell.className = "time";
			cell.colSpan = 2;
			if (t12)
				AP = makeTimePart("ampm", pm ? "pm" : "am", ["am", "pm"]);
			else
				cell.innerHTML = "&nbsp;";

			cal.onSetTime = function() {
				var pm, hrs = this.date.getHours(),
					mins = this.date.getMinutes();
				if (t12) {
					pm = (hrs >= 12);
					if (pm) hrs -= 12;
					if (hrs == 0) hrs = 12;
					AP.innerHTML = pm ? "pm" : "am";
				}
				H.innerHTML = (hrs < 10) ? ("0" + hrs) : hrs;
				M.innerHTML = (mins < 10) ? ("0" + mins) : mins;
			};

			cal.onUpdateTime = function() {
				var date = this.date;
				var h = parseInt(H.innerHTML, 10);
				if (t12) {
					if (/pm/i.test(AP.innerHTML) && h < 12)
						h += 12;
					else if (/am/i.test(AP.innerHTML) && h == 12)
						h = 0;
				}
				var d = date.getDate();
				var m = date.getMonth();
				var y = date.getFullYear();
				date.setHours(h);
				date.setMinutes(parseInt(M.innerHTML, 10));
				date.setFullYear(y);
				date.setMonth(m);
				date.setDate(d);
				this.dateClicked = false;
				this.callHandler();
			};
		})();
	} else {
		this.onSetTime = this.onUpdateTime = function() {};
	}

	var tfoot = Calendar.createElement("tfoot", table);

	row = Calendar.createElement("tr", tfoot);
	row.className = "footrow";

	cell = hh(Calendar._TT["SEL_DATE"], this.weekNumbers ? 8 : 7, 300);
	cell.className = "ttip";
	if (this.isPopup) {
		cell.ttip = Calendar._TT["DRAG_TO_MOVE"];
		cell.style.cursor = "move";
	}
	this.tooltips = cell;

	div = Calendar.createElement("div", this.element);
	this.monthsCombo = div;
	div.className = "combo";
	for (i = 0; i < Calendar._MN.length; ++i) {
		var mn = Calendar.createElement("div");
		mn.className = Calendar.is_ie ? "label-IEfix" : "label";
		mn.month = i;
		mn.innerHTML = Calendar._SMN[i];
		div.appendChild(mn);
	}

	div = Calendar.createElement("div", this.element);
	this.yearsCombo = div;
	div.className = "combo";
	for (i = 12; i > 0; --i) {
		var yr = Calendar.createElement("div");
		yr.className = Calendar.is_ie ? "label-IEfix" : "label";
		div.appendChild(yr);
	}

	this._init(this.firstDayOfWeek, this.date);
	parent.appendChild(this.element);
};

/** keyboard navigation, only for popup calendars */
Calendar._keyEvent = function(ev) {
	var cal = window._dynarch_popupCalendar;
	if (!cal || cal.multiple)
		return false;
	(Calendar.is_ie) && (ev = window.event);
	var act = (Calendar.is_ie || ev.type == "keypress"),
		K = ev.keyCode;
	if (ev.ctrlKey) {
		switch (K) {
		    case 37: // KEY left
			act && Calendar.cellClick(cal._nav_pm);
			break;
		    case 38: // KEY up
			act && Calendar.cellClick(cal._nav_py);
			break;
		    case 39: // KEY right
			act && Calendar.cellClick(cal._nav_nm);
			break;
		    case 40: // KEY down
			act && Calendar.cellClick(cal._nav_ny);
			break;
		    default:
			return false;
		}
	} else switch (K) {
	    case 32: // KEY space (now)
		Calendar.cellClick(cal._nav_now);
		break;
	    case 27: // KEY esc
		act && cal.callCloseHandler();
		break;
	    case 37: // KEY left
	    case 38: // KEY up
	    case 39: // KEY right
	    case 40: // KEY down
		if (act) {
			var prev, x, y, ne, el, step;
			prev = K == 37 || K == 38;
			step = (K == 37 || K == 39) ? 1 : 7;
			function setVars() {
				el = cal.currentDateEl;
				var p = el.pos;
				x = p & 15;
				y = p >> 4;
				ne = cal.ar_days[y][x];
			};setVars();
			function prevMonth() {
				var date = new Date(cal.date);
				date.setDate(date.getDate() - step);
				cal.setDate(date);
			};
			function nextMonth() {
				var date = new Date(cal.date);
				date.setDate(date.getDate() + step);
				cal.setDate(date);
			};
			while (1) {
				switch (K) {
				    case 37: // KEY left
					if (--x >= 0)
						ne = cal.ar_days[y][x];
					else {
						x = 6;
						K = 38;
						continue;
					}
					break;
				    case 38: // KEY up
					if (--y >= 0)
						ne = cal.ar_days[y][x];
					else {
						prevMonth();
						setVars();
					}
					break;
				    case 39: // KEY right
					if (++x < 7)
						ne = cal.ar_days[y][x];
					else {
						x = 0;
						K = 40;
						continue;
					}
					break;
				    case 40: // KEY down
					if (++y < cal.ar_days.length)
						ne = cal.ar_days[y][x];
					else {
						nextMonth();
						setVars();
					}
					break;
				}
				break;
			}
			if (ne) {
				if (!ne.disabled)
					Calendar.cellClick(ne);
				else if (prev)
					prevMonth();
				else
					nextMonth();
			}
		}
		break;
	    case 13: // KEY enter
		if (act)
			Calendar.cellClick(cal.currentDateEl, ev);
		break;
	    default:
		return false;
	}
	return Calendar.stopEvent(ev);
};

/**
 *  (RE)Initializes the calendar to the given date and firstDayOfWeek
 */
Calendar.prototype._init = function (firstDayOfWeek, date) {
	var today = new Date(),
		TY = today.getFullYear(),
		TM = today.getMonth(),
		TD = today.getDate();
	this.table.style.visibility = "hidden";
	var year = date.getFullYear();
	if (year < this.minYear) {
		year = this.minYear;
		date.setFullYear(year);
	} else if (year > this.maxYear) {
		year = this.maxYear;
		date.setFullYear(year);
	}
	this.firstDayOfWeek = firstDayOfWeek;
	this.date = new Date(date);
	var month = date.getMonth();
	var mday = date.getDate();
	var no_days = date.getMonthDays();

	// calendar voodoo for computing the first day that would actually be
	// displayed in the calendar, even if it's from the previous month.
	// WARNING: this is magic. ;-)
	date.setDate(1);
	var day1 = (date.getDay() - this.firstDayOfWeek) % 7;
	if (day1 < 0)
		day1 += 7;
	date.setDate(-day1);
	date.setDate(date.getDate() + 1);

	var row = this.tbody.firstChild;
	var MN = Calendar._SMN[month];
	var ar_days = this.ar_days = new Array();
	var weekend = Calendar._TT["WEEKEND"];
	var dates = this.multiple ? (this.datesCells = {}) : null;
	for (var i = 0; i < 6; ++i, row = row.nextSibling) {
		var cell = row.firstChild;
		if (this.weekNumbers) {
			cell.className = "day wn";
			cell.innerHTML = date.getWeekNumber();
			cell = cell.nextSibling;
		}
		row.className = "daysrow";
		var hasdays = false, iday, dpos = ar_days[i] = [];
		for (var j = 0; j < 7; ++j, cell = cell.nextSibling, date.setDate(iday + 1)) {
			iday = date.getDate();
			var wday = date.getDay();
			cell.className = "day";
			cell.pos = i << 4 | j;
			dpos[j] = cell;
			var current_month = (date.getMonth() == month);
			if (!current_month) {
				if (this.showsOtherMonths) {
					cell.className += " othermonth";
					cell.otherMonth = true;
				} else {
					cell.className = "emptycell";
					cell.innerHTML = "&nbsp;";
					cell.disabled = true;
					continue;
				}
			} else {
				cell.otherMonth = false;
				hasdays = true;
			}
			cell.disabled = false;
			cell.innerHTML = this.getDateText ? this.getDateText(date, iday) : iday;
			if (dates)
				dates[date.print("%Y%m%d")] = cell;
			if (this.getDateStatus) {
				var status = this.getDateStatus(date, year, month, iday);
				if (this.getDateToolTip) {
					var toolTip = this.getDateToolTip(date, year, month, iday);
					if (toolTip)
						cell.title = toolTip;
				}
				if (status === true) {
					cell.className += " disabled";
					cell.disabled = true;
				} else {
					if (/disabled/i.test(status))
						cell.disabled = true;
					cell.className += " " + status;
				}
			}
			if (!cell.disabled) {
				cell.caldate = new Date(date);
				cell.ttip = "_";
				if (!this.multiple && current_month
				    && iday == mday && this.hiliteToday) {
					cell.className += " selected";
					this.currentDateEl = cell;
				}
				if (date.getFullYear() == TY &&
				    date.getMonth() == TM &&
				    iday == TD) {
					cell.className += " today";
					cell.ttip += Calendar._TT["PART_TODAY"];
				}
				if (weekend.indexOf(wday.toString()) != -1)
					cell.className += cell.otherMonth ? " oweekend" : " weekend";
			}
		}
		if (!(hasdays || this.showsOtherMonths))
			row.className = "emptyrow";
	}
	this.title.innerHTML = Calendar._MN[month] + ", " + year;
	this.onSetTime();
	this.table.style.visibility = "visible";
	this._initMultipleDates();
	// PROFILE
	// this.tooltips.innerHTML = "Generated in " + ((new Date()) - today) + " ms";
};

Calendar.prototype._initMultipleDates = function() {
	if (this.multiple) {
		for (var i in this.multiple) {
			var cell = this.datesCells[i];
			var d = this.multiple[i];
			if (!d)
				continue;
			if (cell)
				cell.className += " selected";
		}
	}
};

Calendar.prototype._toggleMultipleDate = function(date) {
	if (this.multiple) {
		var ds = date.print("%Y%m%d");
		var cell = this.datesCells[ds];
		if (cell) {
			var d = this.multiple[ds];
			if (!d) {
				Calendar.addClass(cell, "selected");
				this.multiple[ds] = date;
			} else {
				Calendar.removeClass(cell, "selected");
				delete this.multiple[ds];
			}
		}
	}
};

Calendar.prototype.setDateToolTipHandler = function (unaryFunction) {
	this.getDateToolTip = unaryFunction;
};

/**
 *  Calls _init function above for going to a certain date (but only if the
 *  date is different than the currently selected one).
 */
Calendar.prototype.setDate = function (date) {
	if (!date.equalsTo(this.date)) {
		this._init(this.firstDayOfWeek, date);
	}
};

/**
 *  Refreshes the calendar.  Useful if the "disabledHandler" function is
 *  dynamic, meaning that the list of disabled date can change at runtime.
 *  Just * call this function if you think that the list of disabled dates
 *  should * change.
 */
Calendar.prototype.refresh = function () {
	this._init(this.firstDayOfWeek, this.date);
};

/** Modifies the "firstDayOfWeek" parameter (pass 0 for Synday, 1 for Monday, etc.). */
Calendar.prototype.setFirstDayOfWeek = function (firstDayOfWeek) {
	this._init(firstDayOfWeek, this.date);
	this._displayWeekdays();
};

/**
 *  Allows customization of what dates are enabled.  The "unaryFunction"
 *  parameter must be a function object that receives the date (as a JS Date
 *  object) and returns a boolean value.  If the returned value is true then
 *  the passed date will be marked as disabled.
 */
Calendar.prototype.setDateStatusHandler = Calendar.prototype.setDisabledHandler = function (unaryFunction) {
	this.getDateStatus = unaryFunction;
};

/** Customization of allowed year range for the calendar. */
Calendar.prototype.setRange = function (a, z) {
	this.minYear = a;
	this.maxYear = z;
};

/** Calls the first user handler (selectedHandler). */
Calendar.prototype.callHandler = function () {
	if (this.onSelected) {
		this.onSelected(this, this.date.print(this.dateFormat));
	}
};

/** Calls the second user handler (closeHandler). */
Calendar.prototype.callCloseHandler = function () {
	if (this.onClose) {
		this.onClose(this);
	}
	this.hideShowCovered();
};

/** Removes the calendar object from the DOM tree and destroys it. */
Calendar.prototype.destroy = function () {
	var el = this.element.parentNode;
	el.removeChild(this.element);
	Calendar._C = null;
	window._dynarch_popupCalendar = null;
};

/**
 *  Moves the calendar element to a different section in the DOM tree (changes
 *  its parent).
 */
Calendar.prototype.reparent = function (new_parent) {
	var el = this.element;
	el.parentNode.removeChild(el);
	new_parent.appendChild(el);
};

// This gets called when the user presses a mouse button anywhere in the
// document, if the calendar is shown.  If the click was outside the open
// calendar this function closes it.
Calendar._checkCalendar = function(ev) {
	var calendar = window._dynarch_popupCalendar;
	if (!calendar) {
		return false;
	}
	var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev);
	for (; el != null && el != calendar.element; el = el.parentNode);
	if (el == null) {
		// calls closeHandler which should hide the calendar.
		window._dynarch_popupCalendar.callCloseHandler();
		return Calendar.stopEvent(ev);
	}
};

/** Shows the calendar. */
Calendar.prototype.show = function () {
	var rows = this.table.getElementsByTagName("tr");
	for (var i = rows.length; i > 0;) {
		var row = rows[--i];
		Calendar.removeClass(row, "rowhilite");
		var cells = row.getElementsByTagName("td");
		for (var j = cells.length; j > 0;) {
			var cell = cells[--j];
			Calendar.removeClass(cell, "hilite");
			Calendar.removeClass(cell, "active");
		}
	}
	this.element.style.display = "block";
	this.hidden = false;
	if (this.isPopup) {
		window._dynarch_popupCalendar = this;
		Calendar.addEvent(document, "keydown", Calendar._keyEvent);
		Calendar.addEvent(document, "keypress", Calendar._keyEvent);
		Calendar.addEvent(document, "mousedown", Calendar._checkCalendar);
	}
	this.hideShowCovered();
};

/**
 *  Hides the calendar.  Also removes any "hilite" from the class of any TD
 *  element.
 */
Calendar.prototype.hide = function () {
	if (this.isPopup) {
		Calendar.removeEvent(document, "keydown", Calendar._keyEvent);
		Calendar.removeEvent(document, "keypress", Calendar._keyEvent);
		Calendar.removeEvent(document, "mousedown", Calendar._checkCalendar);
	}
	this.element.style.display = "none";
	this.hidden = true;
	this.hideShowCovered();
};

/**
 *  Shows the calendar at a given absolute position (beware that, depending on
 *  the calendar element style -- position property -- this might be relative
 *  to the parent's containing rectangle).
 */
Calendar.prototype.showAt = function (x, y) {
	var s = this.element.style;
	s.left = x + "px";
	s.top = y + "px";
	this.show();
};
  function findPosY(obj)
  {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
  }
  function getCurrentPos(el, p){
	  var YY = findPosY(el);
	  YY = YY-80;
	  var r = { x: p.x, y: YY};
	  return r;
  }
/** Shows the calendar near a given element. */
Calendar.prototype.showAtElement = function (el, opts) {
	var self = this;
	//var timingRow = Calendar.eventTimingRow(el);
	//var serachForm = Calendar.newSearchForm(el);
	var p = Calendar.getAbsolutePos(el);
	//getCurrentPos(el, p);
	//if(timingRow)  	p = Calendar.getAbsolutePosIE7(el);
	//if(serachForm)  p = Calendar.getSearchAbsolutePosIE7(el);
	if (!opts || typeof opts != "string") {
		this.showAt(p.x, p.y + el.offsetHeight);
		return true;
	}
	function fixPosition(box) {
		if (box.x < 0)
			box.x = 0;
		if (box.y < 0)
			box.y = 0;
		var cp = document.createElement("div");
		var s = cp.style;
		s.position = "absolute";
		s.right = s.bottom = s.width = s.height = "0px";
		document.body.appendChild(cp);
		var br = Calendar.getAbsolutePos(cp);
		//if(timingRow) br = Calendar.getAbsolutePosIE7(cp);
		//if(serachForm) br =  Calendar.getSearchAbsolutePosIE7(cp);
		document.body.removeChild(cp);
		if (Calendar.is_ie) {
			br.y += document.body.scrollTop;
			br.x += document.body.scrollLeft;
		} else {
			br.y += window.scrollY;
			br.x += window.scrollX;
		}
		var tmp = box.x + box.width - br.x;
		if (tmp > 0) box.x -= tmp;
		tmp = box.y + box.height - br.y;
		if (tmp > 0) box.y -= tmp;
	};
	this.element.style.display = "block";
	Calendar.continuation_for_the_fucking_khtml_browser = function() {
		var w = self.element.offsetWidth;
		var h = self.element.offsetHeight;
		self.element.style.display = "none";
		var valign = opts.substr(0, 1);
		var halign = "l";
		if (opts.length > 1) {
			halign = opts.substr(1, 1);
		}
		// vertical alignment
		switch (valign) {
		    case "T": p.y -= h; break;
		    case "B": p.y += el.offsetHeight; break;
		    case "C": p.y += (el.offsetHeight - h) / 2; break;
		    case "t": p.y += el.offsetHeight - h; break;
		    case "b": break; // already there
		}
		// horizontal alignment
		switch (halign) {
		    case "L": p.x -= w; break;
		    case "R": p.x += el.offsetWidth; break;
		    case "C": p.x += (el.offsetWidth - w) / 2; break;
		    case "l": p.x += el.offsetWidth - w; break;
		    case "r": break; // already there
		}
		p.width = w;
		p.height = h + 40;
		self.monthsCombo.style.display = "none";
		fixPosition(p);
		if(Calendar.is_ie){
		p = getCurrentPos(window.event.srcElement, p);
		}
		self.showAt(p.x, p.y);
	};
	if (Calendar.is_khtml)
		setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()", 10);
	else
		Calendar.continuation_for_the_fucking_khtml_browser();
};

/** Customizes the date format. */
Calendar.prototype.setDateFormat = function (str) {
	this.dateFormat = str;
};

/** Customizes the tooltip date format. */
Calendar.prototype.setTtDateFormat = function (str) {
	this.ttDateFormat = str;
};

/**
 *  Tries to identify the date represented in a string.  If successful it also
 *  calls this.setDate which moves the calendar to the given date.
 */
Calendar.prototype.parseDate = function(str, fmt) {
	if (!fmt)
		fmt = this.dateFormat;
	this.setDate(Date.parseDate(str, fmt));
};

Calendar.prototype.hideShowCovered = function () {
	if (!Calendar.is_ie && !Calendar.is_opera)
		return;
	function getVisib(obj){
		var value = obj.style.visibility;
		if (!value) {
			if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C
				if (!Calendar.is_khtml)
					value = document.defaultView.
						getComputedStyle(obj, "").getPropertyValue("visibility");
				else
					value = '';
			} else if (obj.currentStyle) { // IE
				value = obj.currentStyle.visibility;
			} else
				value = '';
		}
		return value;
	};

	var tags = new Array("applet", "iframe", "select");
	var el = this.element;

	var p = Calendar.getAbsolutePos(el);
	var EX1 = p.x;
	var EX2 = el.offsetWidth + EX1;
	var EY1 = p.y;
	var EY2 = el.offsetHeight + EY1;

	for (var k = tags.length; k > 0; ) {
		var ar = document.getElementsByTagName(tags[--k]);
		var cc = null;

		for (var i = ar.length; i > 0;) {
			cc = ar[--i];

			p = Calendar.getAbsolutePos(cc);
			var CX1 = p.x;
			var CX2 = cc.offsetWidth + CX1;
			var CY1 = p.y;
			var CY2 = cc.offsetHeight + CY1;

			if (this.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) {
				if (!cc.__msh_save_visibility) {
					cc.__msh_save_visibility = getVisib(cc);
				}
				cc.style.visibility = cc.__msh_save_visibility;
			} else {
				if (!cc.__msh_save_visibility) {
					cc.__msh_save_visibility = getVisib(cc);
				}
				cc.style.visibility = "hidden";
			}
		}
	}
};

/** Internal function; it displays the bar with the names of the weekday. */
Calendar.prototype._displayWeekdays = function () {
	var fdow = this.firstDayOfWeek;
	var cell = this.firstdayname;
	var weekend = Calendar._TT["WEEKEND"];
	for (var i = 0; i < 7; ++i) {
		cell.className = "day name";
		var realday = (i + fdow) % 7;
		if (i) {
			cell.ttip = Calendar._TT["DAY_FIRST"].replace("%s", Calendar._DN[realday]);
			cell.navtype = 100;
			cell.calendar = this;
			cell.fdow = realday;
			Calendar._add_evs(cell);
		}
		if (weekend.indexOf(realday.toString()) != -1) {
			Calendar.addClass(cell, "weekend");
		}
		cell.innerHTML = Calendar._SDN[(i + fdow) % 7];
		cell = cell.nextSibling;
	}
};

/** Internal function.  Hides all combo boxes that might be displayed. */
Calendar.prototype._hideCombos = function () {
	this.monthsCombo.style.display = "none";
	this.yearsCombo.style.display = "none";
};

/** Internal function.  Starts dragging the element. */
Calendar.prototype._dragStart = function (ev) {
	if (this.dragging) {
		return;
	}
	this.dragging = true;
	var posX;
	var posY;
	if (Calendar.is_ie) {
		posY = window.event.clientY + document.body.scrollTop;
		posX = window.event.clientX + document.body.scrollLeft;
	} else {
		posY = ev.clientY + window.scrollY;
		posX = ev.clientX + window.scrollX;
	}
	var st = this.element.style;
	this.xOffs = posX - parseInt(st.left);
	this.yOffs = posY - parseInt(st.top);
	with (Calendar) {
		addEvent(document, "mousemove", calDragIt);
		addEvent(document, "mouseup", calDragEnd);
	}
};

// BEGIN: DATE OBJECT PATCHES

/** Adds the number of days array to the Date object. */
Date._MD = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

/** Constants used for time computations */
Date.SECOND = 1000 /* milliseconds */;
Date.MINUTE = 60 * Date.SECOND;
Date.HOUR   = 60 * Date.MINUTE;
Date.DAY    = 24 * Date.HOUR;
Date.WEEK   =  7 * Date.DAY;

Date.parseDate = function(str, fmt) {
	var today = new Date();
	var y = 0;
	var m = -1;
	var d = 0;
	var a = str.split(/\W+/);
	var b = fmt.match(/%./g);
	var i = 0, j = 0;
	var hr = 0;
	var min = 0;
	for (i = 0; i < a.length; ++i) {
		if (!a[i])
			continue;
		switch (b[i]) {
		    case "%d":
		    case "%e":
			d = parseInt(a[i], 10);
			break;

		    case "%m":
			m = parseInt(a[i], 10) - 1;
			break;

		    case "%Y":
		    case "%y":
			y = parseInt(a[i], 10);
			(y < 100) && (y += (y > 29) ? 1900 : 2000);
			break;

		    case "%b":
		    case "%B":
			for (j = 0; j < 12; ++j) {
				if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { m = j; break; }
			}
			break;

		    case "%H":
		    case "%I":
		    case "%k":
		    case "%l":
			hr = parseInt(a[i], 10);
			break;

		    case "%P":
		    case "%p":
			if (/pm/i.test(a[i]) && hr < 12)
				hr += 12;
			else if (/am/i.test(a[i]) && hr >= 12)
				hr -= 12;
			break;

		    case "%M":
			min = parseInt(a[i], 10);
			break;
		}
	}
	if (isNaN(y)) y = today.getFullYear();
	if (isNaN(m)) m = today.getMonth();
	if (isNaN(d)) d = today.getDate();
	if (isNaN(hr)) hr = today.getHours();
	if (isNaN(min)) min = today.getMinutes();
	if (y != 0 && m != -1 && d != 0)
		return new Date(y, m, d, hr, min, 0);
	y = 0; m = -1; d = 0;
	for (i = 0; i < a.length; ++i) {
		if (a[i].search(/[a-zA-Z]+/) != -1) {
			var t = -1;
			for (j = 0; j < 12; ++j) {
				if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { t = j; break; }
			}
			if (t != -1) {
				if (m != -1) {
					d = m+1;
				}
				m = t;
			}
		} else if (parseInt(a[i], 10) <= 12 && m == -1) {
			m = a[i]-1;
		} else if (parseInt(a[i], 10) > 31 && y == 0) {
			y = parseInt(a[i], 10);
			(y < 100) && (y += (y > 29) ? 1900 : 2000);
		} else if (d == 0) {
			d = a[i];
		}
	}
	if (y == 0)
		y = today.getFullYear();
	if (m != -1 && d != 0)
		return new Date(y, m, d, hr, min, 0);
	return today;
};

/** Returns the number of days in the current month */
Date.prototype.getMonthDays = function(month) {
	var year = this.getFullYear();
	if (typeof month == "undefined") {
		month = this.getMonth();
	}
	if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && month == 1) {
		return 29;
	} else {
		return Date._MD[month];
	}
};

/** Returns the number of day in the year. */
Date.prototype.getDayOfYear = function() {
	var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
	var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0);
	var time = now - then;
	return Math.floor(time / Date.DAY);
};

/** Returns the number of the week in year, as defined in ISO 8601. */
Date.prototype.getWeekNumber = function() {
	var d = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
	var DoW = d.getDay();
	d.setDate(d.getDate() - (DoW + 6) % 7 + 3); // Nearest Thu
	var ms = d.valueOf(); // GMT
	d.setMonth(0);
	d.setDate(4); // Thu in Week 1
	return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1;
};

/** Checks date and time equality */
Date.prototype.equalsTo = function(date) {
	return ((this.getFullYear() == date.getFullYear()) &&
		(this.getMonth() == date.getMonth()) &&
		(this.getDate() == date.getDate()) &&
		(this.getHours() == date.getHours()) &&
		(this.getMinutes() == date.getMinutes()));
};

/** Set only the year, month, date parts (keep existing time) */
Date.prototype.setDateOnly = function(date) {
	var tmp = new Date(date);
	this.setDate(1);
	this.setFullYear(tmp.getFullYear());
	this.setMonth(tmp.getMonth());
	this.setDate(tmp.getDate());
};

/** Prints the date in a string according to the given format. */
Date.prototype.print = function (str) {
	var m = this.getMonth();
	var d = this.getDate();
	var y = this.getFullYear();
	var wn = this.getWeekNumber();
	var w = this.getDay();
	var s = {};
	var hr = this.getHours();
	var pm = (hr >= 12);
	var ir = (pm) ? (hr - 12) : hr;
	var dy = this.getDayOfYear();
	if (ir == 0)
		ir = 12;
	var min = this.getMinutes();
	var sec = this.getSeconds();
	s["%a"] = Calendar._SDN[w]; // abbreviated weekday name [FIXME: I18N]
	s["%A"] = Calendar._DN[w]; // full weekday name
	s["%b"] = Calendar._SMN[m]; // abbreviated month name [FIXME: I18N]
	s["%B"] = Calendar._MN[m]; // full month name
	// FIXME: %c : preferred date and time representation for the current locale
	s["%C"] = 1 + Math.floor(y / 100); // the century number
	s["%d"] = (d < 10) ? ("0" + d) : d; // the day of the month (range 01 to 31)
	s["%e"] = d; // the day of the month (range 1 to 31)
	// FIXME: %D : american date style: %m/%d/%y
	// FIXME: %E, %F, %G, %g, %h (man strftime)
	s["%H"] = (hr < 10) ? ("0" + hr) : hr; // hour, range 00 to 23 (24h format)
	s["%I"] = (ir < 10) ? ("0" + ir) : ir; // hour, range 01 to 12 (12h format)
	s["%j"] = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy; // day of the year (range 001 to 366)
	s["%k"] = hr;		// hour, range 0 to 23 (24h format)
	s["%l"] = ir;		// hour, range 1 to 12 (12h format)
	s["%m"] = (m < 9) ? ("0" + (1+m)) : (1+m); // month, range 01 to 12
	s["%M"] = (min < 10) ? ("0" + min) : min; // minute, range 00 to 59
	s["%n"] = "\n";		// a newline character
	s["%p"] = pm ? "PM" : "AM";
	s["%P"] = pm ? "pm" : "am";
	// FIXME: %r : the time in am/pm notation %I:%M:%S %p
	// FIXME: %R : the time in 24-hour notation %H:%M
	s["%s"] = Math.floor(this.getTime() / 1000);
	s["%S"] = (sec < 10) ? ("0" + sec) : sec; // seconds, range 00 to 59
	s["%t"] = "\t";		// a tab character
	// FIXME: %T : the time in 24-hour notation (%H:%M:%S)
	s["%U"] = s["%W"] = s["%V"] = (wn < 10) ? ("0" + wn) : wn;
	s["%u"] = w + 1;	// the day of the week (range 1 to 7, 1 = MON)
	s["%w"] = w;		// the day of the week (range 0 to 6, 0 = SUN)
	// FIXME: %x : preferred date representation for the current locale without the time
	// FIXME: %X : preferred time representation for the current locale without the date
	s["%y"] = ('' + y).substr(2, 2); // year without the century (range 00 to 99)
	s["%Y"] = y;		// year with the century
	s["%%"] = "%";		// a literal '%' character

	var re = /%./g;
	if (!Calendar.is_ie5 && !Calendar.is_khtml)
		return str.replace(re, function (par) { return s[par] || par; });

	var a = str.match(re);
	for (var i = 0; i < a.length; i++) {
		var tmp = s[a[i]];
		if (tmp) {
			re = new RegExp(a[i], 'g');
			str = str.replace(re, tmp);
		}
	}

	return str;
};

Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear;
Date.prototype.setFullYear = function(y) {
	var d = new Date(this);
	d.__msh_oldSetFullYear(y);
	if (d.getMonth() != this.getMonth())
		this.setDate(28);
	this.__msh_oldSetFullYear(y);
};

// END: DATE OBJECT PATCHES


// global object that remembers the calendar
window._dynarch_popupCalendar = null;
/*CALENDAR.JS END*/


/*CALENDAR-EN.JS START*/

// full day names
Calendar._DN = new Array
("Sunday",
 "Monday",
 "Tuesday",
 "Wednesday",
 "Thursday",
 "Friday",
 "Saturday",
 "Sunday");

// short day names
Calendar._SDN = new Array
("Su ",
 "Mo ",
 "Tu ",
 "We ",
 "Th ",
 "Fr ",
 "Sa",
 "Su");

// First day of the week. "0" means display Sunday first, "1" means display
// Monday first, etc.
Calendar._FD = 0;

// full month names
Calendar._MN = new Array
("January",
 "February",
 "March",
 "April",
 "May",
 "June",
 "July",
 "August",
 "September",
 "October",
 "November",
 "December");

// short month names
Calendar._SMN = new Array
("Jan",
 "Feb",
 "Mar",
 "Apr",
 "May",
 "Jun",
 "Jul",
 "Aug",
 "Sep",
 "Oct",
 "Nov",
 "Dec");

// tooltips
Calendar._TT = {};
Calendar._TT["INFO"] = "About the calendar";

Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
"\n\n" +
"Date selection:\n" +
"- Use the \xab, \xbb buttons to select year\n" +
"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
"- Hold mouse button on any of the above buttons for faster selection.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Time selection:\n" +
"- Click on any of the time parts to increase it\n" +
"- or Shift-click to decrease it\n" +
"- or click and drag for faster selection.";

Calendar._TT["PREV_YEAR"] = "Prev. year (hold for menu)";
Calendar._TT["PREV_MONTH"] = "Prev. month (hold for menu)";
Calendar._TT["GO_TODAY"] = "Go Today";
Calendar._TT["NEXT_MONTH"] = "Next month (hold for menu)";
Calendar._TT["NEXT_YEAR"] = "Next year (hold for menu)";
Calendar._TT["SEL_DATE"] = "Select date";
Calendar._TT["DRAG_TO_MOVE"] = "Drag to move";
Calendar._TT["PART_TODAY"] = " (today)";

// the following is to inform that "%s" is to be the first day of week
// %s will be replaced with the day name.
Calendar._TT["DAY_FIRST"] = "Display %s first";

// This may be locale-dependent.  It specifies the week-end days, as an array
// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
// means Monday, etc.
Calendar._TT["WEEKEND"] = "0,6";

Calendar._TT["CLOSE"] = "Close";
Calendar._TT["TODAY"] = "Today";
Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";

// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";

Calendar._TT["WK"] = "wk";
Calendar._TT["TIME"] = "Time:";

/*CALENDAR-EN.JS END*/


/*CALENDAR-SETUP.JS START*/
Calendar.setup = function (params) {
	function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } };

	param_default("inputField",     null);
	param_default("displayArea",    null);
	param_default("button",         null);
	param_default("eventName",      "click");
	param_default("ifFormat",       "%Y/%m/%d");
	param_default("daFormat",       "%Y/%m/%d");
	param_default("singleClick",    true);
	param_default("disableFunc",    null);
	param_default("dateStatusFunc", params["disableFunc"]);	// takes precedence if both are defined
	param_default("dateText",       null);
	param_default("firstDay",       null);
	param_default("align",          "Br");
	param_default("range",          [1900, 2999]);
	param_default("weekNumbers",    true);
	param_default("flat",           null);
	param_default("flatCallback",   null);
	param_default("onSelect",       null);
	param_default("onClose",        null);
	param_default("onUpdate",       null);
	param_default("date",           null);
	param_default("showsTime",      false);
	param_default("timeFormat",     "24");
	param_default("electric",       true);
	param_default("step",           2);
	param_default("position",       null);
	param_default("cache",          false);
	param_default("showOthers",     false);
	param_default("multiple",       null);

	var tmp = ["inputField", "displayArea", "button"];
	for (var i in tmp) {
		if (typeof params[tmp[i]] == "string") {
			params[tmp[i]] = document.getElementById(params[tmp[i]]);
		}
	}
	if (!(params.flat || params.multiple || params.inputField || params.displayArea || params.button)) {
		alert("Calendar.setup:\n  Nothing to setup (no fields found).  Please check your code");
		return false;
	}
	

	function onSelect(cal) {
		var p = cal.params;
		var update = (cal.dateClicked || p.electric);
		if (update && p.inputField) {
			p.inputField.value = cal.date.print(p.ifFormat);
			if (typeof p.inputField.onchange == "function")
				p.inputField.onchange();
		}
		if (update && p.displayArea)
		 /*	 p.displayArea.innerHTML = cal.date.print(p.daFormat) */ ;
		if (update && typeof p.onUpdate == "function")
			p.onUpdate(cal);
		if (update && p.flat) {
			if (typeof p.flatCallback == "function")
				p.flatCallback(cal);
		}
		if (update && p.singleClick && cal.dateClicked)
			cal.callCloseHandler();
	};

	if (params.flat != null) {
		if (typeof params.flat == "string")
			params.flat = document.getElementById(params.flat);
		if (!params.flat) {
			alert("Calendar.setup:\n  Flat specified but can't find parent.");
			return false;
		}
		var cal = new Calendar(params.firstDay, params.date, params.onSelect || onSelect);
		cal.showsOtherMonths = params.showOthers;
		cal.showsTime = params.showsTime;
		cal.time24 = (params.timeFormat == "24");
		cal.params = params;
		cal.weekNumbers = params.weekNumbers;
		cal.setRange(params.range[0], params.range[1]);
		cal.setDateStatusHandler(params.dateStatusFunc);
		cal.getDateText = params.dateText;
		if (params.ifFormat) {
			cal.setDateFormat(params.ifFormat);
		}
		if (params.inputField && typeof params.inputField.value == "string") {
			cal.parseDate(params.inputField.value);
		}
		cal.create(params.flat);
		cal.show();
		return false;
	}

	var triggerEl = params.button || params.displayArea || params.inputField;
	triggerEl["on" + params.eventName] = function() {
		var dateEl = params.inputField || params.displayArea;
		var dateFmt = params.inputField ? params.ifFormat : params.daFormat;
		var mustCreate = false;
		var cal = window.calendar;
		if (dateEl)
			params.date = Date.parseDate(dateEl.value || dateEl.innerHTML, dateFmt);
		if (!(cal && params.cache)) {
			window.calendar = cal = new Calendar(params.firstDay,
							     params.date,
							     params.onSelect || onSelect,
							     params.onClose || function(cal) { cal.hide(); });
			cal.showsTime = params.showsTime;
			cal.time24 = (params.timeFormat == "24");
			cal.weekNumbers = params.weekNumbers;
			mustCreate = true;
		} else {
			if (params.date)
				cal.setDate(params.date);
			cal.hide();
		}
		if (params.multiple) {
			cal.multiple = {};
			for (var i = params.multiple.length; --i >= 0;) {
				var d = params.multiple[i];
				var ds = d.print("%Y%m%d");
				cal.multiple[ds] = d;
			}
		}
		cal.showsOtherMonths = params.showOthers;
		cal.yearStep = params.step;
		cal.setRange(params.range[0], params.range[1]);
		cal.params = params;
		cal.setDateStatusHandler(params.dateStatusFunc);
		cal.getDateText = params.dateText;
		cal.setDateFormat(dateFmt);
		if (mustCreate)
			cal.create();
		//cal.refresh();
		
		if (!params.position) {
			if(params.button != null) {
				if(params.button.name == "gdp_when4") {
					changeDateCriteria2(5);	
					getDiv('showDate2', 'chooseDate2');
					cal.showAtElement(params.inputField);
					document.getElementById('gdp_when4').checked = true;
					document.getElementById('gdp_when3').checked = false;
					return true;
				} else if(params.button.name == "gdp_when2") {
					changeDateCriteria(5);	
					getDiv('showDate', 'chooseDate');
					cal.showAtElement(params.inputField);
					document.getElementById('gdp_when2').checked = true;
					document.getElementById('gdp_when1').checked = false;
					return true;
				}
			} else {
			cal.showAtElement(params.button || params.displayArea || params.inputField, params.align);
			}
		} else {
			cal.showAt(params.position[0], params.position[1]);
		}
		return false;
	};

	return cal;
};
/*CALENDAR-SETUP.JS START*/



    
      function loginFBUser(){
      			//hideDivs("fbSignIn");
				var session = FB.Facebook.apiClient.get_session();
				var uid = session.uid;
				var sessionid = session.session_key;
		       	setCookie("login_source", "facebook", 1);
	  			UserManager.loginFBUser(uid, sessionid, checkLoginHandlerFB);
      }

	function loginFB(){
	      FB.Bootstrap.ensureInit(function () {
	      	FB.Connect.requireSession();	      	
	      	FB.Facebook.get_sessionState().waitUntilReady(function() { 
				loginFBUser();
			});
	  	  });
	}
	
	function checkSessionState(){
		var sessionWaitable = FB.Facebook.get_sessionWaitable();
		if (sessionWaitable.get_isReady() && sessionWaitable.result) {
			loginFBUser();
		}	
	}

	function closeWindow(win_name){
		hideDivs(win_name);
		closeFBPopMainDiv();
	}
	
	function closeFBPopMainDiv(){
			$('fbPopupMainDiv').style.display='none';
	}
	
	function showFBPopMainDiv(){
			$('fbPopupMainDiv').style.display='';
	}
	
	function showFBRegistrationForm(){
				$('mainDiv_fb').style.zIndex = "55";
				showDivs('tbl_registration_fb');
	}

	function registerFBUser(){
				var session = FB.Facebook.apiClient.get_session();
				var uid= session.uid;
				var sessionid= session.session_key;
		        setCookie("login_source", "facebook", 1);
		        if(trim(($('nickName_fb').value))!=""){
		       		if(checkEmail($('email_fb').value)){
				        $('registerationError_fb').innerHTML="";
						UserManager.registerFBUser($('postcode_fb').value, $('email_fb').value, $('nickName_fb').value, uid, sessionid, registerationHandlerFB);
						
					}else{
						$('registerationError_fb').innerHTML="Please enter valid email address.";
					}
				}else{
						$('registerationError_fb').innerHTML="Please enter nick name.";
				}

	}
	
	function hideLoginTableFB() {
		hideDivs('tbl_registration_fb');
		hideDivs('tbl_showNickHelp_fb');
	}

	function checkLoginHandlerFB(source) {
		var obj = $("loginError");
		var div = "";
		div = "loginError";
		document.getElementById('loginError').style.display = '';
		var cntx = document.getElementById('cntx');
		if(cntx == null) cntx = "";
		else cntx = cntx.value;
				
	     if( source == "error" ) 
			displayMsg(div,"Error processing your request.");	
		  else if( source == "Inactive")   
			displayMsg(div,"Please activate your account");   
		  else if( source == "Invalid") {
			displayMsg(div,"The email address or password you provided does not match our records");			
		  }
		  else if (source == "errorLoginFBUser"){
			  displayMsg(div,"Error while sign in using Facebook");			
		  }else if (source == "deleteduser"){
			  showFBPopMainDiv();
			  showDivs('deletedUserPopup');
		  }else if (source == "errorRegisterFBUser"){
			  displayMsg(div,"Error while registering user");			
	      }else if(source == "fbUserNotUpdated"){
		     var fbSession = FB.Facebook.apiClient.get_session();
  			 var uid= fbSession.uid;	
		     //$('fb_user_info_div').innerHTML = "<fb:profile-pic uid='" + uid + "' facebook-logo='true' size='thumb' ></fb:profile-pic>"+
		      									 //" Welcome <fb:name useyou='false' uid='"+ uid + "'></fb:name>";

			 //$('fb_user_info_div').innerHTML = "<fb:profile-pic uid='" + uid + "' facebook-logo='true' size='thumb' ></fb:profile-pic>";
		     //	$('welcomeMsg').innerHTML = "Welcome <fb:name useyou='false' linked='false' uid='"+ uid + "'></fb:name>";
		     clearRegistrationWindow('true');
		     showFBProfile('fb_user_info_div_reg', 'welcomeMsg_reg');
		     UserManager.getFacebookUserName(uid, fillFBUserNameHandler);
		     showFBPopMainDiv();
	      	 showFBRegistrationForm();
			 //reRenderXFBMLTags();
	      }else {  
			hideDivs('tbl_login');
			if($('welcomenote')&& source != 'UserLogged') {	
			var fbSession = FB.Facebook.apiClient.get_session();
				var uid= fbSession.uid;	
				source =  " <fb:name useyou='false' uid='"+ uid + "'></fb:name>"
				$("welcomenote").innerHTML = $("welcomenote").innerHTML = "Welcome  "+ source; 

				$('welcomenote').style.display = "";
				reRenderXFBMLTags();
				askExtendedPermission();
				if($('isUserLogged')) $('isUserLogged').value ='Yes';
				
			} else if($('welcomenote_mapView')&& source != 'UserLogged') {
				$("welcomenote_mapView").innerHTML = $("welcomenote_mapView").innerHTML = "Welcome "+ source;
				$('welcomenote_mapView').style.display = "";
				if($('isUserLogged')) $('isUserLogged').value ='Yes';
			}
		
			$("wozzon_header_logStatus").style.display = '';
			if($("wozzon_header_logStatus") != null)  {		 
				$('wozzon_header_myWozzonStatus').innerHTML = "<a href='"+cntx+"controller.web?method=myWozzon'><img height='26' width='100' border='0'  align='left' id='id_myWozzon' alt='My Wozzon' src='"+cntx+"images/menu_mywozzon_trans1.png'/></a>" ;
				$("wozzon_header_logStatus").innerHTML ="<a href='javascript:logout(1)'><img border='0' alt='Log out'  align='left'  src='"+cntx+"images/menu_sign_out.png'/></a>";
			}
		
		 }	
	}
	
	function activateFBUser(){
		UserManager.activateFBUser(activationHandlerFB);
	}
	
	function activationHandlerFB(source){
		var obj = $("loginError");
		var div = "";
		div = "loginError";
		document.getElementById('loginError').style.display = '';
		var cntx = document.getElementById('cntx');
		if(cntx == null) cntx = "";
		else cntx = cntx.value;
				
	     if( source == "error" ) 
			displayMsg(div,"Error processing your request.");	
		  else if( source == "Inactive")   
			displayMsg(div,"Please activate your account");   
		  else if( source == "Invalid") {
			displayMsg(div,"Facebook id or session key is invalid, please relogin.");			
		  }else if (source == "errorActivatingFBUser"){
			  displayMsg(div,"Error while activating using Facebook account");			
		  }else {  
				closeFBPopMainDiv();
			  	hideDivs('deletedUserPopup');			
				var isreviewEvent = $('isReviewEvent')
				var isreview =$('isReview')
				
				if( !( (isreview && isreview.value == "Yes") ||  (isreviewEvent && isreviewEvent.value == "Yes") || 
							  ( $('whichLink').value == "showSubmitChanges" ) )  ) {		
				  // showDivs('tbl_registerationSuccess');	 		 
				}
				showDivs('tbl_registerationSuccess');
				 checkLoginHandlerFB($('nickName_fb').value);
			
		 }	
	}
	
	function askExtendedPermission(){
		FB.Bootstrap.ensureInit(function () {
	          // Check if user has permission, if not invoke dialog.
	         var permission = 'publish_stream';
	       	 FB.Connect.requireSession(function(){
	            //check is user already granted for this permission or not
	            var hasPermission = 'false';
	            FB.Facebook.apiClient.users_hasAppPermission(permission,
	            function(hasPerm) {
	                // prompt offline permission
	                if (hasPerm == 0) {
	                    // render the permission dialog
	                    FB.Connect.showPermissionDialog(permission,
	                    function(result){
	                        if (null == result || result == ''){
	                            hasPermission = 'false';
	                        }else{
   	                            hasPermission = 'true';
	                        }
	                        UserManager.saveExtendedPermission('publish_stream', hasPermission, function(data){});
	                    }, false, null);
	                } else {
	                    hasPermission = 'true';
	                    UserManager.saveExtendedPermission('publish_stream', hasPermission, function(data){});
	                }
	            });
	            
	        });
	    });
	}

	function fillFBUserNameHandler(data){
		 var userName = replaceAll(data.toLowerCase(),' ','');
		 $('nickName_fb').value = userName;

	}
	
	function showFBProfile(profileDiv, welcomeDiv){
		var fbSession = FB.Facebook.apiClient.get_session();
  		var uid= fbSession.uid;	
		$(profileDiv).innerHTML = "<fb:profile-pic uid='" + uid + "' facebook-logo='true' width='52' height='52' ></fb:profile-pic>";
		$(welcomeDiv).innerHTML = "Welcome <fb:name useyou='false' linked='false' uid='"+ uid + "'></fb:name>";
		reRenderXFBMLTags();
	}
	
	 function registerationHandlerFB(source) {
		var obj = $("registerationError_fb");
		var div = "";
		div = "registerationError_fb";	
		showDivs(div);	
		if( source == "1" ){ 
			var msg = "<b>This email address has already been taken.</b> Do you have woZZon account with this email? <br/>" +
				"Yes! Then login with <b>I ALREADY HAVE WOZZON ACCOUNT</b> to sync your woZZon and Facebook Account <b>OR</b> " +
				 "Login with woZZon Account"; 
			displayMsg(div,msg);
		}else if(source == "2")   displayMsg(div,"Nickname already in use, please select another Nickname");
		else if( source == "3") displayMsg(div,"Error registering user");
		else if(source == "4")	displayMsg(div,"Please enter nick name.");
	    else if(source == "5" ) displayMsg(div,"Please enter password.");
	    else if(source == "6" ) displayMsg(div,"Please enter  email address.");
		else if(source == "ReRegistered")  {	
				hideLoginTable();
				$('tbl_reRegister').style.display = '';
			}
	    else if(source == "Registered")  {		
		  	closeFBPopMainDiv();
		  	hideDivs('tbl_registration_fb');			
			var isreviewEvent = $('isReviewEvent')
			var isreview =$('isReview')
			
			if( !( (isreview && isreview.value == "Yes") ||  (isreviewEvent && isreviewEvent.value == "Yes") || 
						  ( $('whichLink').value == "showSubmitChanges" ) )  ) {		
			  // showDivs('tbl_registerationSuccess');	 		 
			}
			 checkLoginHandlerFB($('nickName_fb').value);
		 } else  {          
		  	obj.innerHTML = source;
		}
	}
	
	function loginWithWozzon(){
		hideDivs("tbl_registration_fb");
		showDivs("tbl_existing_account");
		showFBProfile('fb_user_info_div_ext', 'welcomeMsg_ext');
	}
	
	//function hideExistingAccTbl(){
	//	hideDivs("tbl_existing_account");
	//}
	
	
	function loginExistingAccount(){
		var emailValue;
		var passwordValue;
		document.getElementById('login_form').email.value =emailValue= document.getElementById('existing_account_form_fb').email_exst_woz.value;
		document.getElementById('login_form').password.value =passwordValue= document.getElementById('existing_account_form_fb').password_exst_woz.value;
		if(emailValue!='' && checkEmail(emailValue) && passwordValue!=''){
			 var fbSession = FB.Facebook.apiClient.get_session();
			 var uid= fbSession.uid;
			 var sessionid = fbSession.session_key;
			 UserManager.alreadyHaveWozzonLogin(emailValue, passwordValue, uid, sessionid, existingAccountHandler);
			
		}else{
			$('exisitingAccountError_fb').innerHTML= 'Please provide a correct email and password.';
		}
	}
	
	function existingAccountHandler(source){
		if(source=='alreadySync'){
			$('exisitingAccountError_fb').innerHTML="OOPS! This account is already sync. If you have any question or comment, please send us your feedback.";
		}else if(source=='userNoExists'){
			$('exisitingAccountError_fb').innerHTML="Please provide correct email/password.";
		}else if(source=='Invalid'){
			$('exisitingAccountError_fb').innerHTML= "The email address or password you provided does not match our records";
		}else if(source=='error'){
			$('exisitingAccountError_fb').innerHTML= "Error.";
		}else if(source!='error'){
			hideDivs("tbl_existing_account");
			//showSuccessMessage(messageBody);
			showDivs('tbl_sync_success');
			loginAjax(1);
      	}
	}

	function backWindow(hideWindow,showWindow){
		hideDivs(hideWindow);
		showDivs(showWindow);
	}
	
	function reRenderXFBMLTags(){
		FB.XFBML.Host.parseDomTree(); 
	}

	function showSuccessMessage(messageBody){
		showDivs("tbl_confirmation_message");
		$("tbl_confirmation_message_content").innerHTML(messageBody);
		
	}

	//Incomplete
	function removeSyncPanel(){
		//setCookie("remove_sync_panel", "true", 1);
		hideDivs('syncAccount');
		UserManager.removeSyncPanel();		
	}
	
	
	function clearAlreadyWozzonWindow(){
		$('exisitingAccountError_fb').innerHTML = "";
		document.getElementById('existing_account_form_fb').email_exst_woz.value = "";
		document.getElementById('existing_account_form_fb').password_exst_woz.value = "";
	}
	
	function clearRegistrationWindow(clearAll){
		$('registerationError_fb').innerHTML = "";
		if(clearAll=='true'){
			$('nickName_fb').value="";
			$('email_fb').value="";
			$('postcode_fb').value="";
		}
	}

	/* Shaheer */
	
	function loginForWozzon() {
		var loginEmail = $('loginEmail').value;
		var loginPassword = $('loginPassword').value;
		var loginRemember = $('loginRemember').value;
		UserManager.login(loginEmail, loginPassword, loginRemember, checkLoginForWozzonHandler);
	}
	
	function checkLoginForWozzonHandler(source) {
		if (source == "Invalid") {
			displayErrorMessage("Invalid username or password");
		} else {		
			setCookie("login_source", "whitelabel", 1);
			//$('welcomenote').innerHTML = source;		
			$('fbSignIn').style.display = 'none';
			checkLoginHandler(source);
			//hideDivs('fbSignIn');
		}
	}
	
	function fbSignIn() {
		$('fbSignIn').style.display = '';
		hideDivs('tbl_registration_fb');
	}
	
	
	/* Related to Synchronizing from Web, from Wozzon*/
		function getFacebookID(){
	      FB.Bootstrap.ensureInit(function () {
	      	FB.Connect.requireSession();	      	
	      	FB.Facebook.get_sessionState().waitUntilReady(function() {
	      		syncWithFacebook();
			});
	  	  });
	}
	
	    
      function syncWithFacebook(){
      		var session = FB.Facebook.apiClient.get_session();
			var uid = session.uid;
			var sessionid = session.session_key;
			document.getElementById('fb_user_info_div_permission_window').innerHTML = "<fb:profile-pic uid='" + uid + "' facebook-logo='true' size='thumb' ></fb:profile-pic>" +
									  "<b><fb:name useyou='false' linked='false' uid='"+ uid + "'></fb:name></b>";
									  
			showDivs('tbl_permission_fb');
			$('permissionError_fb').innerHTML='';
			showDivs('continueWithSyncDiv');
			showFBPopMainDiv();
			reRenderXFBMLTags();
      }
      
      function continueWithSync(){
		    var session = FB.Facebook.apiClient.get_session();
			var uid = session.uid;
        	UserManager.syncWozzonWithFB(uid, checkWozzonSyncHandler);
      }
      
      function checkWozzonSyncHandler(source){
      	if(source=='Success'){
      		showDivs('tbl_sync_success');
      		hideDivs('tbl_permission_fb');
      		removeSyncPanel();
      	}else if(source=='fbAlreadySync') {
      		$('permissionError_fb').innerHTML= 'Facebook account is already sync with some woZZon ID. Please try different Facebook Account';
      		hideDivs('continueWithSyncDiv');
      	}else if(source=='alreadySync') {
      		$('permissionError_fb').innerHTML= 'Your woZZon account is already sync with some Facebook Account.';
      		hideDivs('continueWithSyncDiv');
      		removeSyncPanel();
      	}
      }
	/* end */

