
/// <reference path="jquery.js" />

var pageLocation;

//go to select page number
function gotoPage(obj,pageName,QS){
	window.location = pageName + "?Page=" + obj.selectedIndex + "&" + QS;
}
//set object to be disabled or enabled
function enableDisabled(obj,id){
	if(obj.checked)
		getElementByServerID(id).disabled=false;
	else
		getElementByServerID(id).disabled=true;
}
//set&remove readOnly from an object
function setReadOnly(id){	
	getElementByServerID(id).readOnly=(!getElementByServerID(id).readOnly);		
}	
//show or hide an object
function showHideObject(obj,id){
	if(obj.checked)
		getElementByServerID(id).style.display="block";
	else
		getElementByServerID(id).style.display="none";
}
//
function clearField(id){
	getElementByServerID(id).value="";
}
function hideObject(id){
	if(getElementByServerID(id))
		getElementByServerID(id).style.display="none";
}	
//open popup window
function openWindow(url,name,features){
    var width = 400;
    var height = 300;
    var left = parseInt((screen.availWidth/2) - (width/2));
    var top = parseInt((screen.availHeight/2) - (height/2));
    
   
    if(features.indexOf("top=") == -1 || features.indexOf("left=") == -1 )
    {
        features+= ",top=" + top + ",left=" + left
    }
	window.open(url,name,features);
}

//build list of checked objects
function addRemoveId(id, limit, errorMessage, globalIdsObject) {

	if (globalIdsObject.value.indexOf("|" + id + "|,")>-1){
		globalIdsObject.value = globalIdsObject.value.replace("|" + id + "|," , "");
	}else{
		if(limit==-1 || globalIdsObject.value.split(",").length<=limit){
			globalIdsObject.value = globalIdsObject.value + "|" +  id + "|,";			
		}else{
			alert(errorMessage);
			document.getElementById("cbx" + id).checked=false;
		}
	}
}
//Ckecked or unchecked all checkboxes
function checkAll(obj, objsName, checkedCSS, unCheckedCSS, hiddenObj, globalIdsObject,idStartingPosition) {
    var inputs;
    var back = "";
    
	
	if(jQuery)
	    inputs = $("input[name='"+objsName +"']");
	else
	    inputs= document.getElementsByName(objsName);
	    
	var state = obj.checked;
	if(state)//clear 'srcIds' from already selected objects
	    globalIdsObject.value = "";

	if (state == true)
	    back = "#BDD3E8";

	$(inputs).attr("checked", state).each(function(i, n) {
	    $(n.parentNode.parentNode).css("background-color", back);
	})
		
	for(i=0;i<inputs.length;i++){
	    if ('checkbox' == inputs[i].type.toLowerCase()) {
	        id = inputs[i].id.substring(idStartingPosition, inputs[i].id.length);
			addRemoveId(id, -1, "",globalIdsObject);	
		}
	}
	if(getElementByServerID(hiddenObj)){
		getElementByServerID(hiddenObj).value = globalIdsObject.value;
	}
}
//Set css / remove css from grid line
function setLineCSS(obj, checkedCSS, unCheckedCSS) {

    if (obj.parentNode != null && obj.parentNode.parentNode != null) {
        if (obj.checked) {
            srcCSS = unCheckedCSS;
            tarCSS = checkedCSS;
        } else {
            srcCSS = checkedCSS;
            tarCSS = unCheckedCSS;
        }

        var parentTR = obj.parentNode.parentNode;
        var parentTRChildNodes = parentTR.getElementsByTagName("TD");

        for (var j = 0; j < parentTRChildNodes.length; j++) {
            parentTRChildNodes[j].className = tarCSS;
        }
    }


}

function navigate(url){
	document.location = url;
}
//set class of mouse activity
function mouseOver(ctrl,style)
{
if(ctrl.className!="ToggleModeSelectedCss")
	ctrl.className=style;
}

function mouseOut(ctrl,style)
{	
if(ctrl.className!="ToggleModeSelectedCss")
	ctrl.className=style;
}

function mouseDown(ctrl) {
    var parent = $(ctrl).parents("table")[0];

    $(parent).find("#normalView")[0].className = "ToggleModeOffCss";
    $(parent).find("#HTMLView")[0].className = "ToggleModeOffCss";

if( document.getElementById("preview") != null )
{
document.getElementById("preview").className="ToggleModeOffCss";	
}

ctrl.className="ToggleModeSelectedCss";
}

function addQueryStringParam( paramName, paramValue )
{
	var url = window.location.search;
	if ( url.length > 0 ){
		url += "&" + paramName + "=" + paramValue;
	} else {
		url = "?" + paramName + "=" + paramValue;
	}
	return url;
}
function validateEmail(src) {
    var emailReg = "^[\\w-_\.\+]*[\\w-_\.\+]\@[\\w]\.+[\\w]+[\\w]$";
    var regex = new RegExp(emailReg);
    return regex.test(src);
}

function validateURL(src) {
    var urlReg = "^[A-Za-z]+://[A-Za-z0-9-_%&\?\/.=]+\\.[A-Za-z0-9-_%&\?\/.=]+$";  //"^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$";
    var regex = new RegExp(urlReg);
    return regex.test(src);
}


function trimStr(str){
	return str.replace(/^\s+|\s+$/, '')
}

function setChecked()
{
    var groups = getElementByServerID("hidSrcIdsG");
    var arr = document.getElementsByName("ckboxG") ;

    if(!groups || arr.length == 0)
        return;
        
    groups.value="";
    for(var i=0 ; i< arr.length ; i++)
    {
        if(arr[i].checked)
        {
            setLineCSS(arr[i],"GridLineChecked","GridLineUnChecked");
            groups.value += "|" +  arr[i].id.replace("cbx","") + "|,"
        }
    }

}

// Update content of cattegoryid and category name from the categories tree
function UpdateCategoriesInputs(categoryID,categoryName) {
    $("input[id$=contentCategoryId]")[0].value=categoryID;
    $("input[id$=contentCategoryName]")[0].value=categoryName;
}

function getElementByServerId(id)
{
    return getElementByServerID(id);
}

function getElementByServerID(id)
{
    var el = document.getElementById(id);
    if (el) return el;
    
    for (i=0; i < arrNamingContainerIDs.length; i++)
    {
        el = document.getElementById(arrNamingContainerIDs[i] + "_" + id);
        if (el) return el;
    }
}

function addWindowOnLoad(func)
{
    if (window.addEventListener)
    {
      window.addEventListener('load', func, false); 
    } 
    else if (window.attachEvent)
    {
      window.attachEvent('onload', func);
    }
}

function addEvent(obj, evName, func)
{
    if (obj.addEventListener)
    {
      obj.addEventListener(evName, func, false); 
    } 
    else if (obj.attachEvent)
    {
      obj.attachEvent('on' + evName, func);
    }
}

// Fitted for firefox
function getNextSibling(el)
{
    var rv = el.nextSibling;
    while (rv && rv.nodeType !=1) 
    {
        rv = rv.nextSibling;
    }
    return rv;
}

function getInnerText(el)
{
    var hasInnerText =
    (document.getElementsByTagName("body")[0].innerText != undefined) ? true : false;

    if (hasInnerText)
        return el.innerText;
    else
        return el.textContent;
}

function setInnerText(el, value)
{
    var hasInnerText =
    (document.getElementsByTagName("body")[0].innerText != undefined) ? true : false;

    if (hasInnerText)
        el.innerText = value;
    else
        el.textContent = value;
}

function getElementTop(Elem) {
	if(document.getElementById) {	
		var elem = Elem;
	} else if (document.all) {
		var elem = document.all[Elem];
	}
	yPos = elem.offsetTop;
	tempEl = elem.offsetParent;
	while (tempEl != null) {
		yPos += tempEl.offsetTop;
  		tempEl = tempEl.offsetParent;
	}
	return yPos;
}

function getElementLeft(Elem) {
	var elem;
	if(document.getElementById) {
		var elem = Elem;
	} else if (document.all){
		var elem = document.all[Elem];
	}
	xPos = elem.offsetLeft;
	tempEl = elem.offsetParent;
	while (tempEl != null) {
		xPos += tempEl.offsetLeft;
  		tempEl = tempEl.offsetParent;
	}
	return xPos;
}




var _displayFeedbackValue = false;

function feedbackDisplayClose() {
    _displayFeedbackValue = 'none';
    setFeedbackDisplay();
}

function feedbackDisplaySwitch() {
    var container = getElementByServerId("feedbackContainer");
    var el = GetFeedbackIFrame();

    if (container.style.display == '') {
        container.style.display = 'none';
    }
    else {
        container.style.display = '';
        // ensure form is shown:
        el.contentWindow.document.getElementById('tblInnerFeedbackDisplay').style.display = '';
        el.contentWindow.document.getElementById('divFeedbackSent').style.display = 'none';
    }
}

function feedbackDisplay(displayValue, e) {
    var ev = window.event || e;
    var src = ev.srcElement || ev.currentTarget;

    if (!ev)
        ev = GetFeedbackIFrame().contentWindow.event;

    if ((displayValue == 'none') && ev.toElement &&
             (ev.toElement.id == 'iframeFeedbackDisplay' ||
              ev.toElement.id == 'divFeedbackDisplay' ||
              ev.toElement.id == 'tblInnerFeedbackDisplay' ||
              ev.toElement.id == 'divFeedbackSent')
           ) {
        return;
    }

    if ((displayValue == 'none') && (src.id != 'divFeedbackDisplay'))
        return;

    _displayFeedbackValue = displayValue;
    // if set to display, show immediately
    if (displayValue == '') {
        setFeedbackDisplay();
    }
    else // if set to hide, wait 1000 ms, and afterwards, set current flag
    {
        window.setTimeout("setFeedbackDisplay()", 1000);
    }
}

function setFeedbackDisplay() {
    getElementByServerId("feedbackContainer").style.display = _displayFeedbackValue;
}

function sendFeedbackMessage() {
    var el = GetFeedbackIFrame();
    var content = el.contentWindow.document.getElementById('txtFeedbackMessage').value;

    if (!content || content.trim() == '') {
        alert(getInnerText(getElementByServerID('lblRequired')));
        return;
    }

    ActiveTrail.WebSite.UserControls.UserFeedback.SendFeedbackMessage(
            content, location.href);

    el.contentWindow.document.getElementById('tblInnerFeedbackDisplay').style.display = 'none';
    el.contentWindow.document.getElementById('divFeedbackSent').style.display = '';
    el.contentWindow.document.getElementById('txtFeedbackMessage').value = '';
}



function GetFeedbackIFrame() {
    return document.getElementById('iframeFeedbackDisplay');
}



function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}


function mouseDownStep(e) {
    var id = e.id.replace("template", "");
    openWindow("PreviewTemplate.aspx?TemplateId=" + id, "_blank", "top=10,left=10,width=780,height=580,location=no,resizable=yes,scrollbars=yes,location=no,menubar=no,status=no,toolbar=no");
}

// function for AJAX operations. converts the xml data that returns from the operation into a JSON result object 
function GetJsonObjectFromXmlData(data)
{
    var text = data.getElementsByTagName("string")[0].text; //for IE browser
            
    //for chrome and firefox
    if (typeof (text) == "undefined" || text == "" || text == "undefined") 
    {
        text = data.getElementsByTagName("string")[0].textContent;
    }
    
    return eval('(' + text + ')');
}


//returns query string parameter value of given query string parameter key
function getQuerystring(key, default_) {
    if (default_ == null) default_ = "";
    key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regex = new RegExp("[\\?&]" + key + "=([^&#]*)");
    var qs = regex.exec(window.location.href);
    if (qs == null)
        return default_;
    else
        return qs[1];
}

