﻿var Browser = {
    ie: navigator.userAgent.indexOf("MSIE") != -1,
    ieVersion: parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("MSIE")+5, 3)),
    mf: navigator.userAgent.indexOf("Firefox") != -1,
    gc: navigator.userAgent.indexOf("Chrome") != -1
}
var Regex = {
    char : /\S/,
    number: /^[-]?\d*$/,
    decimal: /^[-]?\d*\.?\d*\,?\d*$/,
    mail : /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/,
    web: /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$/,
    tag : /<[^>]*>/
}
function $id(id){
    return document.getElementById(id);
}
function $tag(parentNode, tagName){
    return parentNode.getElementsByTagName(tagName)[0];
}
function $tags(parentNode, tagName){
    return parentNode.getElementsByTagName(tagName);
}

function AppendOnLoad(_function) {
    if (Browser.ie) window.attachEvent("onload", _function);
    else window.addEventListener("load", _function, false);
}

function SetCookie( name, key, value, expires, path, domain, secure ){
	 document.cookie = name + "=" + key + "=" + value +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
}
function GetCookie(name, key){
   var positionStart = document.cookie.indexOf(name);
   if (positionStart != -1){
        var name = name + "=";
        var key = key + "=";
        var valueStart = positionStart + name.length + key.length;
        var valueEnd = document.cookie.indexOf(";", valueStart);
        if (valueEnd == -1) valueEnd = document.cookie.length;
        return document.cookie.substring(valueStart, valueEnd);
   }
}
function Popup(url, w, h, scroll){
    var top = document.documentElement.offsetHeight/2 - h/2;
    var left = document.documentElement.offsetWidth/2 - w/2;
    var scrollbars = scroll ? scroll : "no"; 
    var status = "no";
    var menubar = "no";
    var resizable = "no";
    var settings = "width=" + w + ", height=" + h + ", top=" + top + ", left=" + left + ", scrollbars=" + scrollbars + ", status=" + status + ", menubar=" + menubar + ", resizable=" + resizable;
    window.open(url, '', settings);
}
function Trim(str){
   return str.replace(/^\s*|\s*$/g,"");
}
function RemoveChildNodes(parentNode) {
    while (parentNode.hasChildNodes()) {
        for (var i = 0; i < parentNode.childNodes.length; i++) {
            parentNode.removeChild(parentNode.childNodes[i]);
        }
    }
}
function PointRow(el){
    var tr = el.parentNode.parentNode;
    var trClassName = tr.className;
    tr.className = "rowselected";
    el.onmouseout = function(){
        tr.className = trClassName;
    }   
}

var content = null;
var contentHeight = null;
var isOverflow = false;
var select = null;
var selectHover = null;
var title = null;
var isSelected = false;

function SelectOn(el){
    select = el.parentNode;
    selectHover = select.nextSibling;
    if (!isSelected && $tag(selectHover, "table")){
        select.style.display="none";
        selectHover.style.display="block";        
        if(selectHover.offsetHeight > 250){
            var con = selectHover.childNodes[1].firstChild;
            con.style.height="250px";
            con.style.overflow="auto";
            con.style.marginRight="12px";
            con.style.marginBottom="-16px";            
            if(Browser.mf){
                con.style.overflowX="hidden";
                con.style.marginBottom="0px";
            }
        }
        content = $id("content");
        contentHeight = content.offsetHeight;
        if(selectHover.offsetTop + selectHover.offsetHeight > contentHeight){
            isOverflow = true;
            content.style.height = selectHover.offsetTop + selectHover.offsetHeight - 60 + "px";
        }
        SetControlsState(selectHover);
        isSelected = true;        
    }
}

function SelectOff(el){
    selectHover = el.parentNode.parentNode.parentNode;
    select = selectHover.previousSibling;
    selectHover.style.display="none";
    select.style.display="block";
    if(isOverflow)
        content.style.height = contentHeight - 80 + "px";    
    if(HasControlsStateChanged(selectHover))
        select.style.backgroundImage = "url(../templates/Style/selected.png)";
    isSelected = false;
}

var cArray = null;
var tArray = null;
var sArray = null;

function SetControlsState(parentNode){
    var inputs = $tags(parentNode, "input");
    if(inputs.length > 0){
        cArray = new Array();
        tArray = new Array();
        for(var i=0;i<inputs.length;i++){
            if(inputs[i].getAttribute("type") == "checkbox"){
                cArray.push(inputs[i].checked);
            }
            if(inputs[i].getAttribute("type") == "text"){
                tArray.push(inputs[i].value);
            }
        }
    }
    var selects = $tags(parentNode, "select");
    if(selects.length > 0){
        sArray = new Array();
        for(var i=0;i<selects.length;i++){
            sArray.push(selects[i].value);
        }
    }
}

function HasControlsStateChanged(parentNode){
    var inputs = $tags(parentNode, "input");
    var selects = $tags(parentNode, "select");    
    if(inputs.length > 0){
        for(var i=0;i<inputs.length;i++){
            if(inputs[i].getAttribute("type") == "checkbox")
                if(inputs[i].checked != cArray[i])
                    return true;               
            
            if(inputs[i].getAttribute("type") == "text")
                if(Trim(inputs[i].value) != Trim(tArray[i]))
                    return true;
        }        
    }
    if(selects.length > 0){   
        for(var i=0;i<selects.length;i++){
            if(selects[i].value != sArray[i])
                return true;
        }
    }    
    return false;
}