﻿var browser = '';
var ua = navigator.userAgent;
if (ua.indexOf("MSIE") != -1) { browser = "MSIE"; } else if (ua.indexOf("Firefox") != -1 || ua.indexOf("Safari") != -1) { browser = "FF"; }

var IE = "MSIE";
Object._extend = function(destination, source) {
    for (var property in source) {
        destination[property] = source[property];
    }
    return destination;
}
///////////////////////////////////////////////
/// Find  DOM Element (one or more)
///////////////////////////////////////////////
function $(element) {
    if (arguments.length > 1) {
        for (var i = 0, elements = [], length = arguments.length; i < length; i++)
            elements.push($(arguments[i]));
        return elements;
    }
    var elm = null;
    if (typeof element == 'string')
        elm = document.getElementById(element);
    return elm;
}

/////////////////////////////////////////////////////////////
/// Find  DOM Elements by tag name and optional class name //
/////////////////////////////////////////////////////////////
function $A(TagName, className, obj , isArray) {
    var elements
    if (!!!obj)
        elements = document.getElementsByTagName(TagName);
    else {
        if (typeof (obj) == "object")
            elements = obj.getElementsByTagName(TagName);
        else
            elements = $(obj).getElementsByTagName(TagName);
    }
    var cElem = [];
    if (!!!className || className == "*") return elements;
    var i = 0;
    for (i = 0; i < elements.length; i++) {
        if (elements[i].className == className) {
            cElem[cElem.length] = elements[i];

        }
    }
    if (isArray) return cElem;
    return cElem.length == 1 ? cElem[0] : cElem;
}

function $P(tagName, className, obj) {    
    
    var temp = obj.parentNode;
    while (temp.parentNode != null) {
        if (temp.className == className)
            return temp;
        temp = temp.parentNode;
    }
    return null;
}

function $S(elements, styleKey, styleAttribute) {
    var i = 0;
    for (i = 0; i < elements.length; i++) {
        elements[i].style
    }
}

function css(obj, styleArray) {

}

function enterClicked(event, onclickHolder) 
{
    if (event.keyCode == 13) 
    {
        var obj = $(onclickHolder);
        if (obj.onclick == null || obj.onclick() == true) 
        {
            obj.click();
        }
        return false;
    }
}
function enterClickedAncore(event, onclickHolder) 
{
    if (event.keyCode == 13) {
        var obj = $(onclickHolder);
        if (obj.onclick == null || obj.onclick() == true) {
            obj.onclick();
        }
        return false;
    }
}
function ClickAncor(event, onclickHolder) {
    var obj = $(onclickHolder);
    if (obj.onclick == null || obj.onclick() == true) {
        return obj.click(event);
    }
    return true;
}

function InputBlur(input ,defaultValue) {

    if (IsEmpty(input.value))
        input.value = defaultValue;
    
}
function InputFocus(input, defaultValue) {

    if (trim(input.value) == defaultValue)
        input.value = "";

}

function fRegExp(value, pattern) {
    var res = value.match(pattern);
    return res;
}
function IsEmpty(value) {
    var neRE = /\S/;
    return value.search(neRE) == -1 ? true : false;
}

function fIsNumbersOnly(value) {

    neRE = eval('/^\\d{1,}$/');
    return value == null || value.match(neRE) == null ? false : true;
}

function IsNumbersOnly(value, n, m) {
    var args = IsNumbersOnly.arguments;
    if (args.length < 3)
        m = n;
    var neRE = eval('/^\\d{' + m + ',' + n + '}$/');
    if (args.length == 1)
        neRE = eval('/^\\d{1,}$/');
    return value.match(neRE) == null ? false : true;
}

/////////////////////////////////////////////////////////////
///      Trim String                                    /////
/////////////////////////////////////////////////////////////
function trim(stringToTrim) {
    return stringToTrim.replace(/^\s+|\s+$/g, "");
}

/////////////////////////////////////////////////////////////
///      Left Trim String                               /////
/////////////////////////////////////////////////////////////
function ltrim(stringToTrim) {
    return stringToTrim.replace(/^\s+/, "");
}

/////////////////////////////////////////////////////////////
///      Right Trim String                               /////
/////////////////////////////////////////////////////////////
function rtrim(stringToTrim) {
    return stringToTrim.replace(/\s+$/, "");
}


/////////////////////////////////////////////////////////////
///      String Format                              /////
/////////////////////////////////////////////////////////////
String.format = function(text) {
    if (arguments.length <= 1)
        return text;
    var tokenCount = arguments.length - 2;
    for (var token = 0; token <= tokenCount; token++)
        text = text.replace(new RegExp("\\{" + token + "\\}", "gi"), arguments[token + 1]);
    return text;
};

/////////////////////////////////////////////////////////////
///      String startsWith                              /////
/////////////////////////////////////////////////////////////
String.startsWith = function(s1, s2) {
    var reg = new RegExp("^" + s2);
    return s1.match(reg) == null ? false : true;
}

/////////////////////////////////////////////////////////////
///      Add Event to object FF and IE                  /////
/////////////////////////////////////////////////////////////
function fAddEvent(obj, evType, fn) {
    if (obj.addEventListener) {
        obj.addEventListener(evType, fn, false);
        return true;
    }
    else if (obj.attachEvent) {
        var r = obj.attachEvent("on" + evType, fn);
        return r;
    }
    else {
        return false;
    }
}

/////////////////////////////////////////////////////////////
///      Find XY of an object                           /////
/////////////////////////////////////////////////////////////
function fFindPos(obj) {
    var curleft = curtop = 0;
    if (browser == 'MSIE') {
        if (obj.offsetParent) {
            curleft = obj.offsetLeft;
            curtop = obj.offsetTop;
            while (obj = obj.offsetParent) {
                curleft += obj.offsetLeft;
                curtop += obj.offsetTop;
            }
        }
    }
    else {
        curleft = obj.offsetLeft;
        curtop = obj.offsetTop;
    }
    return [curleft, curtop];
}

/////////////////////////////////////////////////////////////
///      Serelize Form : extract  Inputs name and value  ////
///      from  all inputs inside a sent object id        ////
///      form object od any other DOM object             ////
/////////////////////////////////////////////////////////////
function fFormSerialize(objId) {
    var inputHolder = $(objId);
    var param = "";
    param += fGenerateInputType(inputHolder.getElementsByTagName("input"));
    param += fGenerateSelect(inputHolder.getElementsByTagName("select"))
    param += fGenerateTextarea(inputHolder.getElementsByTagName("textarea"))
    return param;

}

/////////////////////////////////////////////////////////////
///      fGetInputValue : Get Object or form Id  and find
///                       input value
/////////////////////////////////////////////////////////////
function fGetInputValue(objId, tagName, inputName) {
    var inputHolder = fGetInput(objId, tagName, inputName);
    if (inputHolder == null) return null;
    if (inputHolder.length > 0) {
        var i = 0;
        for (; i < inputHolder.length; i++)
            if (inputHolder[i].checked == true)
            return inputHolder[i].value;
    }
    else
        return inputHolder.value;
    return null;
}

/////////////////////////////////////////////////////////////
///      fGetInputValue : Get Object or form Id  and find
///                       input value
/////////////////////////////////////////////////////////////
function fGetInput(objId, tagName, inputName) {
    var inputHolder;
    if (typeof (objId) == "object")
        inputHolder = objId;
    else
        inputHolder = $(objId);
    var tagElements = inputHolder.getElementsByTagName(tagName);
    var returnValue = [];
    if (tagElements == null || tagElements.length == 0) return null;
    var i = 0;
    for (i = 0; i < tagElements.length; i++) {
        if (tagElements[i].name == inputName) {
            if (tagElements[i].type == "radio") {
                returnValue[returnValue.length] = tagElements[i];
            }
            else {
                return tagElements[i];
            }
        }
    }
    return returnValue.length == 0 ? null : returnValue;
}
/////////////////////////////////////////////////////////////
///      Get inputs name and value                      /////
/////////////////////////////////////////////////////////////
function fGenerateInputType(inputs) {
    var param = "";
    var i = 0;
    var oneRes = "";
    for (i = 0; i < inputs.length; i++) {
        if (param != "")
            oneRes = "&";
        var input = inputs[i];
        switch (input.type) {
            case "hidden":
            case "password":
            case "text":
                oneRes += input.name + "=" + input.value;
                break;
            case "checkbox":
                if (input.checked)
                    oneRes += input.name + "=" + input.value;

        }
        if (oneRes != "&")
            param += oneRes;
    }
    return param;
}

/////////////////////////////////////////////////////////////
///      Get selects name and value                     /////
/////////////////////////////////////////////////////////////
function fGenerateSelect(sArray) {
    var param = "";
    var i = 0;
    var oneRes = "";
    for (i = 0; i < sArray.length; i++) {
        oneRes = "&";
        var select = sArray[i];
        oneRes += select.name + "=" + select.value;
        param += oneRes;
    }
    return param;

}

/////////////////////////////////////////////////////////////
///      Get Textarea name and value                     /////
/////////////////////////////////////////////////////////////
function fGenerateTextarea(tArray) {
    var param = "";
    var i = 0;
    var oneRes = "";
    for (i = 0; i < tArray.length; i++) {
        oneRes = "&";
        var textarea = tArray[i];
        oneRes += textarea.name + "=" + textarea.value;
        param += oneRes;
    }
    return param;

}

/////////////////////////////////////////////////////////////
///      Mark select object with data                   /////
/////////////////////////////////////////////////////////////
function fMarkSelect(selectId, value) {
    var select = $(selectId);
    if (select == null) return;
    var i = 0;
    for (i = 0; i < select.length; i++) {
        if (select[i].value == value) {
            select[i].selected = true;
            return;
        }
    }
}


/////////////////////////////////////////////////////////////
///      COOKIE FUNCS                                   /////
/////////////////////////////////////////////////////////////

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;
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return "";
}

/////////////////////////////////////////////////////////////
///      END COOKIE FUNCS                                   /////
/////////////////////////////////////////////////////////////

//alert(document.cookie);