﻿

function bdayProvinceCalc(elem) {
	var url = elem.value;
	if (location.href.toLowerCase().indexOf("ispreview=true") != -1) {
		url += "&ispreview=true";
	}
	location.href=url;
}

function InitSearch() {
	searchType = GetCookie("client_search");
	if (!searchType || searchType == "undefined" || searchType == "") {
		searchType="Theatre";
	}		
	SwitchSearchType();
}

function SwitchSearchType()
{
	SetCookie("client_search", searchType, 30);
	closePopup1();
	closePopup2();	
	switch(searchType) {
	case "Theatre": 
		txtSearch.style.display="none";
		spnSearch01.style.display="inline";
		spnSearch02.style.display="inline";		
		InitTheatreSearch();
		break;	
    case "Postal": 
        var cookieVal = GetCookie("client_search_PC");
        if (cookieVal != "")
        {
		    txtSearch.value = cookieVal;
		}
		txtSearch.style.display="inline";		
		spnSearch01.style.display="none";
		spnSearch02.style.display="inline";		
		if (txtSearch.value != "" && !txtSearch.value.startsWith('Search') && !txtSearch.value.startsWith('Recherche')) 
		{
			CineplexWebsite.AjaxServices.Search_SearchCityPostalCode(txtSearch.value, OnCityResult, SearchFailure);
		}		
		var loc = "";
		var selmovID = "";
		CineplexWebsite.AjaxServices.Search_SelectMoviesByLocation(loc,selmovID,OnMovieResult,SearchFailure);		
		break;		
    case "Movie":
        txtSearch.style.display="none";
        spnSearch01.style.display="inline";
        spnSearch02.style.display="inline";
        InitMovieSearch();        
        break;	
    default:
        txtSearch.style.display="none";
		spnSearch01.style.display="inline";
		spnSearch02.style.display="inline";		
		InitTheatreSearch();       	
	}
}

//******** Postal Search ************//

function OnMovieResult(result, userContext, methodName)
{
  if (result == '' || result == null || result.startsWith('error:'))
  {
        spnSearch02.style.display="none";		
		OnSearchError(1, result);
  }
  else
  {
        closePopup1();
        closePopup2();
		spnSearch02.innerHTML = result;
		spnSearch02.style.display="inline";
  }
}

function OnCityKeyPress(e) {
	e = (window.event) ? window.event : e;
	var keyCodeEntered = (e.which) ? e.which : e.keyCode;
		
	if (keyCodeEntered == '10' || keyCodeEntered == '13'){
		CityEntered();
		return false;
	} else {
		addEvent(txtSearch, "change", CityEntered) ;
		spnSearch02.style.display="inline";
		closePopup1();
		return true;
	}
}
function CityEntered() {
	if (txtSearch.value != "") {
		CineplexWebsite.AjaxServices.Search_SearchCityPostalCode(txtSearch.value, OnCityResult, SearchFailure);
	}
	else
	{
	    var loc = "";
	    var selmovID = "";
		CineplexWebsite.AjaxServices.Search_SelectMoviesByLocation(loc,selmovID,OnMovieResult,SearchFailure);	
	}
}

function OnCityResult(result, userContext, methodName) 
{
	if (result == '' || result == null || result.startsWith('error:') ) 
	{
		//Hide the second span
		spnSearch02.style.display="inline";		
		OnSearchError(1, result);
	} 
	else 
	{
		closePopup1();		
		SetCookie("client_search_PC", txtSearch.value, 30);
				
		var selMovieID = '';
		if (movieID) {
			selMovieID = movieID;
		}
		
		CineplexWebsite.AjaxServices.Search_SelectMoviesByLocation(result, selMovieID, OnCity_ListMovies, SearchFailure);
	}
}
function OnCity_ListMovies(result, userContext, methodName) {
	if (result == '' || result == null || !result.startsWith('<select')) {
		OnSearchError(1, result);
	} else {
		closePopup1();
		spnSearch02.innerHTML = result;
		spnSearch02.style.display="inline";		
	}
}

function OnCitySelectMovie()
{
    // Omniture Code Begins
    if (searchType == 'Movie')
    {
        s=s_gi('cplxcineplexcom');
        s.prop15='Movie';
        s.eVar16='Movie';
        s.events='event7';
        s.tl(this,'o','Movie Search');
    }
    else if (searchType == 'Postal')
    {
        s=s_gi('cplxcineplexcom');
        s.prop15='PostalCode';
        s.eVar16='PostalCode';
        s.events='event7';
        s.tl(this,'o','PostalCode Search');
    }
    // Omniture Code Ends
    
	var movieID = spnSearch02.childNodes[0].value;
	var movieName = spnSearch02.childNodes[0].options[spnSearch02.childNodes[0].selectedIndex].text;

	var url = BuildMovieUrl(movieName, movieID) + "?topsearch=C|M";
	topLevelRedirect(url);
}

function InitMovieSearch()
{
    CineplexWebsite.AjaxServices.Search_SelectMovieCities(OnSelectMovieCities,SearchFailure);
}

function OnSelectMovieCities(result, userContext, methodName)
{
  if (result == '' || result == null || !result.startsWith('<select')) {
		spnSearch01.style.display="none";
		OnSearchError(1, result);		
	} else {	
		closePopup1();		
		spnSearch01.innerHTML = result;
		spnSearch01.style.display="inline";	
		OnMovieSelectMovie();				
	}
}

function OnMovieSelectMovie()
{
  var cityID = spnSearch01.childNodes[0].value;    
  closePopup1();
  var selMovieID = '';
  if (movieID) 
  {
	selMovieID = movieID;
  }
  if (cityID == '' || cityID == null || cityID.startsWith('Select') || cityID.startsWith('Sélectionnez'))
  {
    var loc = "";
  	CineplexWebsite.AjaxServices.Search_SelectMoviesByLocation(loc,selMovieID,OnMovieResult,SearchFailure);	
  }
  else
  {
    CineplexWebsite.AjaxServices.Search_SelectMoviesByLocation(cityID, selMovieID, OnCity_ListMovies, SearchFailure);
  }
}

//********* Theatre Search    *********/
function InitTheatreSearch() {
	CineplexWebsite.AjaxServices.Search_SelectCities(OnSelectCities, SearchFailure);
}
function OnSelectCities(result, userContext, methodName) {
	if (result == '' || result == null || !result.startsWith('<select')) {
		spnSearch01.style.display="none";
		OnSearchError(1, result);		
	} else {	
		closePopup1();
		spnSearch01.innerHTML = result;
		spnSearch01.style.display="inline";			
		OnTheatreSelectTheatre();		
	}
}
function OnTheatreSelectTheatre() {

	var cityID = spnSearch01.childNodes[0].value;	
	var selTheatreID = '';
	if (theatreID)
	{
	  selTheatreID = theatreID;
	}
	CineplexWebsite.AjaxServices.Search_SelectTheatresByCity(cityID, selTheatreID, OnTheatreTheatreBind, SearchFailure);
}

function OnTheatreTheatreBind(result, userContext, methodName) {
	if (result == '' || result == null || !result.startsWith('<select')) {
		spnSearch02.style.display="none";
		OnSearchError(1, result);
	} else {
		closePopup1();
		spnSearch02.innerHTML = result;
		spnSearch02.style.display="inline";
		
	}
}
function OnTheatreSelect() {    
    // Omniture Code Begins
    s=s_gi('cplxcineplexcom');
    s.prop15='Theatre';
    s.eVar16='Theatre';
    s.events='event7';
    s.tl(this,'o','Theatre Search');
    // Omniture Code Ends
	var theatreID = spnSearch02.childNodes[0].value;
	var theatreName = spnSearch02.childNodes[0].options[spnSearch02.childNodes[0].selectedIndex].text;
	if (theatreID == '') return;
	//CineplexWebsite.AjaxServices.Search_SearchCityByTheatre(theatreID, OnCityFound, SearchFailure);
	var url = BuildTheatreUrl(theatreName, theatreID) + "?topsearch=T|T";	
	topLevelRedirect(url);
}
//********* Theatre Search END*********/

function OnSearchButtonPress(e) {
	cancelEvent(e);

	switch(searchType) 
	{	
	case "Theatre": 
		if (spnSearch02.childNodes[0].value != "") {
			var theatreID = spnSearch02.childNodes[0].value;
			var theatreName = spnSearch02.childNodes[0].options[spnSearch02.childNodes[0].selectedIndex].text;
			topLevelRedirect(BuildTheatreUrl(theatreName, theatreID) + "?topsearch=T|T");
			
		} else if (spnSearch01.childNodes[0].value != "") {
			closePopup1();			
			topLevelRedirect(baseURL + "Theatres/FindATheatre.aspx?topsearch=T|F");
		} else
		{		    
		    closePopup1();			
			topLevelRedirect(baseURL + "Theatres/FindATheatre.aspx?topsearch=T|F");
		}
		break;
	case "Postal": 
	    if(txtSearch.value == "")
	    {
	      closePopup1();
	      topLevelRedirect(baseURL + "Movies.aspx");
	    }
	    else if (spnSearch02.childNodes[0].value == "") 
	    {
			closePopup1();
			topLevelRedirect(baseURL + "Movies.aspx");			
		}
		else
		{
		    closePopup1();
			topLevelRedirect(baseURL + "Movies.aspx");	
		}		
		break;
	case "Movie":
	    if (spnSearch01.childNodes[0].value == "")
	    {
	      closePopup1();
	      topLevelRedirect(baseURL + "Movies.aspx");
	    }
	    else if (spnSearch02.childNodes[0].value == "") 
	    {
			closePopup1();
			topLevelRedirect(baseURL + "Movies.aspx");			
		}
		else
		{
		    closePopup1();
			topLevelRedirect(baseURL + "Movies.aspx");	
		}
		break;
	}
	return false;
}

function OnCityFound(result, userContext, methodName)
{
  for(var i=0; i < spnSearch01.childNodes[0].length; i++)
  {
    if (spnSearch01.childNodes[0].options[i].value == result)
    {
      spnSearch01.childNodes[0].options[i].selected = true;
      break;
    }
  }    
}

function OnSearchError(boxNum, errorMessage) {
	if (errorMessage.startsWith("error:")) {
		errorMessage = errorMessage.substring(6);
	}
	if (boxNum == 2) {
		showSearchValidationPopup2(errorMessage);
	} else {
		showSearchValidationPopup1(errorMessage);
	}
}

function OnDDL2Change() {
	if (searchType == "Theatre") 
	{
		OnTheatreSelect();
	} 
	else if (searchType == "Postal")
	{
	    OnCitySelectMovie();
	}
	else if (searchType == "Movie")
	{
	   OnCitySelectMovie();
	}
}
function SearchFailure() {
	//TODO: Have to finish this result
	alert('An Error has occurred, please try again.');
}

function showSearchValidationPopup1(msg) {
	var vld = $find(enhSrchVldPopup1ID);
	var pnlMsg = $get("pnlSearchPopupMessage1");
	pnlMsg.innerHTML = msg;
	vld.show();	
}
function showSearchValidationPopup2(msg) {
	var vld = $find(enhSrchVldPopup2ID);
	var pnlMsg = $get("pnlSearchPopupMessage2");
	pnlMsg.innerHTML = msg;
	vld.show();	
}
function closePopup1() {
	var vld = $find(enhSrchVldPopup1ID);
	if (vld != undefined) {
		vld.hide();
	}
}
function closePopup2() {
	var vld = $find(enhSrchVldPopup2ID);
	if (vld != undefined) {
		vld.hide();
	}
}
function BuildMovieUrl(movieName, movieID) 
{
	if (movieName != null && movieID != null)
	{
		var re = /[^\w]/;
		var name = movieName;
		while (re.test(name)) {
			name = name.replace(re, "_")
		}
		while (name.indexOf("__") != -1) 
		{
            name = name.replace("__", "_")
        }		
		return baseURL + "Movies/MovieDetails/" + movieID.substring(0, 8) + "/" + name + ".aspx";
	}
	//TODO:Throw Error
	return "#";
}
function BuildTheatreUrl(theatreName, theatreID) 
{
	if (theatreName != null && theatreID != null)
	{
		var re = /[^\w]/;
		var name = theatreName;
		while (re.test(name)) {
			name = name.replace(re, "_")
		}
		name = name.replace("__", "_");
		return baseURL + "Theatres/TheatreDetails/" + theatreID.substring(0, 8) + "/" + name + ".aspx";
	}
	//TODO:Throw Error
	return "#";
}

function SetCookie( name, value, expires ) 
{
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires )
	{
	expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	var tmp = name + "=" +escape( value ) +( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + ";path=/";
	document.cookie = tmp;
}

function GetCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) &&
	( name != document.cookie.substring( 0, name.length ) ) )
	{
	return "";
	}
	if ( start == -1 ) return "";
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}
// written by Dean Edwards, 2005
// with input from Tino Zijdel, Matthias Miller, Diego Perini

// http://dean.edwards.name/weblog/2005/10/add-event/

function addEvent(element, type, handler) {
	if (element.addEventListener) {
		element.addEventListener(type, handler, false);
	} else {
		// assign each event handler a unique ID
		if (!handler.$$guid) handler.$$guid = addEvent.guid++;
		// create a hash table of event types for the element
		if (!element.events) element.events = {};
		// create a hash table of event handlers for each element/event pair
		var handlers = element.events[type];
		if (!handlers) {
			handlers = element.events[type] = {};
			// store the existing event handler (if there is one)
			if (element["on" + type]) {
				handlers[0] = element["on" + type];
			}
		}
		// store the event handler in the hash table
		handlers[handler.$$guid] = handler;
		// assign a global event handler to do all the work
		element["on" + type] = handleEvent;
	}
};
// a counter used to create unique IDs
addEvent.guid = 1;

function removeEvent(element, type, handler) {
	if (element.removeEventListener) {
		element.removeEventListener(type, handler, false);
	} else {
		// delete the event handler from the hash table
		if (element.events && element.events[type]) {
			delete element.events[type][handler.$$guid];
		}
	}
};

function handleEvent(event) {
	var returnValue = true;
	// grab the event object (IE uses a global event object)
	event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
	// get a reference to the hash table of event handlers
	var handlers = this.events[event.type];
	// execute each event handler
	for (var i in handlers) {
		this.$$handleEvent = handlers[i];
		if (this.$$handleEvent(event) === false) {
			returnValue = false;
		}
	}
	return returnValue;
};

function fixEvent(event) {
	// add W3C standard event methods
	event.preventDefault = fixEvent.preventDefault;
	event.stopPropagation = fixEvent.stopPropagation;
	return event;
};
fixEvent.preventDefault = function() {
	this.returnValue = false;
};
fixEvent.stopPropagation = function() {
	this.cancelBubble = true;
};


function cancelEvent(e) {
	if (e && e.preventDefault) {
	  e.preventDefault(); // DOM style
	 } else if (window.event) {
		window.event.cancelBubble = true;
	 }	  
}

function topLevelRedirect(url) 
{
	var form = document.createElement("form");
	form.setAttribute("method", "GET");
	form.setAttribute("action", url);	
	form.setAttribute("target", "_top");
	document.body.appendChild(form);
	form.submit();
}

// Logo Link

function LoginPopup(contextObj)
{
  $('#' + contextObj.loginPopupID).Show(escape(contextObj.redirectUrl));
}


// Buy Ticket Link

var currentContextObj = null;

function IsUserLogged(contextObj)
{
    currentContextObj = contextObj;
    CineplexWebsite.AjaxServices.IsUserLogged(IsUserLogged_Success, IsUserLogged_Failure, contextObj);
}

function IsUserLogged_Success(result, contextObj) 
{
    if (result) {
        UserHasData(contextObj);
    }
    else {
        $('#' + contextObj.loginPopupID).Show(escape(contextObj.redirectUrl));
    }
}

function IsUserLogged_Failure(error, userContext)
{
    $('#' + contextObj.loginPopupID).Show(escape(contextObj.redirectUrl));
}

function ClosePopupAskUserData()
{
    if (currentContextObj != null)
    {
        $('#' + currentContextObj.loginPopupID).Hide();
        UserHasData(currentContextObj);
    }   
    return false;
}

function UserHasData(contextObj)
{
    CineplexWebsite.AjaxServices.UserHasData(UserHasData_Success, UserHasData_Failure, contextObj);
}

function UserHasData_Success(result, contextObj) 
{
    if (result) {
        window.location = contextObj.redirectUrl;
    }
    else {
        $('#' + contextObj.userDataPopupID).Show(escape(contextObj.redirectUrl));
    }
}

function UserHasData_Failure(error, userContext)
{
    $('#' + contextObj.userDataPopupID).Show(escape(contextObj.redirectUrl));
}

