﻿/* 
Moja-Trgovina.NET
2006-2009
MAIN FRONTEND JS LIBRARY
(c) Sistrum d.o.o.
*/



// { name:value, name2:value, name3:value }
// function onsuccess(data, textStatus, oXMLHttpRequest) { }
// function onerror(oXMLHttpRequest, textStatus, errorThrown) { }
// xml, html, script, json, text
function MakeAjaxCall(type, data2send, onsuccess, onerror, datatype)
{
    if (!jQuery) return;

    var url = "Service/AjaxDataService.aspx?type=" + type;
    
    jQuery.ajax({
        type: "POST"
      , url: url
      , data: postdata ? postdata : null
      , success: onsuccess
      , error: onerror
      , dataType: datatype ? datatype : "text"
      , cache: false
    });
}




//function ClickOnEnter(e, id)
//{
//    e = arguments.length > 0 ? arguments[0] : window.event;
//    if(e.keyCode == 13)
//    {
//        var elem = document.getElementById(id);
//        if(!elem)
//        {
//            alert("Došlo je do pogreške!");
//            return;
//        }
//        ClickButton(elem, false);
//    }
//}

function ClickOnEnter(e, target) {
    if (!e) var e = window.event;
    if (e.keyCode == 13) {
        eval(unescape("" + document.getElementById(target)));
    }
}

function ClickButton(elem, inOpener)
{
    if(!elem)
    {
        alert("Došlo je do pogreške (elem?)");
        return;
    }
    if(!elem.href)
    {
        alert("Došlo je do pogreške (elem.href?)");
        return;
    }
    if(inOpener)
        eval("window.opener." + elem.href.replace("javascript:", ""));
    else
        eval(elem.href.replace("javascript:", ""));
}


function WindowOpenXY( url, x, y )
{
	var prms = "Width=" + x + "px, Height=" + y + "px, left=100, top=100, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes";
	var wnd = window.open(url, "", prms );
	if( wnd )
	    wnd.focus();
}


function ToggleListSelection()
{
    var cbox_list = document.getElementsByName("selected");
    if( cbox_list )
    {
        for( i = 0; i< cbox_list.length; i++ )
        {
            cbox_list[i].checked = !cbox_list[i].checked;
        }
    } 
}

function RequestQueryString(qs_name)
{
	var qs = document.location.search;
	if( qs < 1 )
		return null;
	else
		qs = qs.substring(1,qs.length);
	var qs_arr = qs.split('&');
	
	for( var i = 0; i<qs_arr.length; i++ )
	{	
		var qname = qs_arr[i].split('=')[0].toString().toLowerCase();
		if( qname == qs_name.toString().toLowerCase() )
			return qs_arr[i].split('=')[1];
	}
	return null;
}

function StringFormat()
{
	var s = arguments[0];
	for( var i=1; i<arguments.length; i++ ) 
    {
        var placeholder = "{" + parseInt(i-1) + "}";
        var value = arguments[i].toString();
        while( s.indexOf(placeholder) != -1 )
            s = s.replace( placeholder, value );
    }
	return s;
}

function IsNullOrEmpty( s )
{
    return ( ( !s ) || ( s.toString() == "" ) )
}

function ToggleVisibility(elemId)
{
    var elem = document.getElementById(elemId);
    if( !elem )
        return;
    if(elem.style.display=='block')
        elem.style.display='none';
    else
        elem.style.display='block';
}

function ToggleVisibilityInline(elemId)
{
    var elem = document.getElementById(elemId);
    if( !elem )
        return;
    if(elem.style.display=='inline')
        elem.style.display='none';
    else
        elem.style.display='inline';
}

function CheckCCInput(cardNumber, cardType)
{
    var isValid = false;
    var ccCheckRegExp = /[^\d ]/;
    isValid = !ccCheckRegExp.test(cardNumber);

    if (isValid)
    {
        var cardNumbersOnly = cardNumber.replace(/ /g,"");
        var cardNumberLength = cardNumbersOnly.length;
        var lengthIsValid = false;
        var prefixIsValid = false;
        var prefixRegExp = null;

        switch(cardType)
        {
            case "MSTR":
            lengthIsValid = (cardNumberLength == 16);
            prefixRegExp = /^5[1-5]/;
            break;

            case "VISA":
            lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
            prefixRegExp = /^4/;
            break;

            case "AMEX":
            lengthIsValid = (cardNumberLength == 15);
            prefixRegExp = /^3(4|7)/;
            break;

            case "DNRS":
            lengthIsValid = (cardNumberLength == 15);
            prefixRegExp = /^$/;
            break;
        }

        if(prefixRegExp == null )
        {
            alert("Nepoznata vrsta kreditne kartice!");
            return false;
        }
        prefixIsValid = prefixRegExp.test(cardNumbersOnly);
        isValid = prefixIsValid && lengthIsValid;
    }

    if (isValid)
    {
        var numberProduct;
        var numberProductDigitIndex;
        var checkSumTotal = 0;

        for (digitCounter = cardNumberLength - 1; digitCounter >= 0; digitCounter--)
        {
            checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
            digitCounter--;
            numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
            for (var productDigitCounter = 0;productDigitCounter < numberProduct.length; productDigitCounter++)
            {
                checkSumTotal += parseInt(numberProduct.charAt(productDigitCounter));
            }
        }

        isValid = (checkSumTotal % 10 == 0);
    }

    return isValid;
}


// event helpers
function AddEventHandler(element, type, func) 
{
	if(element.addEventListener) {
		element.addEventListener(type,func,false);
	}
	else if (element.attachEvent) {
		element.attachEvent('on'+type,func);
	}
}

function RemoveEventHandler(element, type, func) 
{
	if(element.removeEventListener) {
		element.removeEventListener(type,func,false);
	}
	else if (element.attachEvent) {
		element.detachEvent('on'+type,func);
	}
}


function pause(milliseconds)
{
    var _date = new Date();
    var _curDate = null;
    do 
    { 
        _curDate = new Date(); 
    }
    while(_curDate-_date < milliseconds);
}





function BookmarkPage() {    
    if (window.opera && window.print) { 
        var elem = document.createElement('a');
        elem.setAttribute('href', location.href);
        elem.setAttribute('title', document.title);
        elem.setAttribute('rel', 'sidebar');
        elem.click();
    }
    else {        
        window.external.AddFavorite(location.href, document.title);
    }
}




// switch tabova na detaljim proizvoda
function ActivateProductDetailsTab(idx) {
    var tabCount = document.getElementById("productDetailsTabs").getElementsByTagName("li").length;
    var exit = 0;
    var i = 0;
    while(exit<10){
        var tab = document.getElementById("tab_" + i);
        var li = document.getElementById("li_" + i);

        if (tab && li) {
            tab.style.display = "none";
            li.className = "tab_inactive";
        }
        else
            exit++;
        i++;      
    }
    document.getElementById("tab_" + idx).style.display = "block";
    document.getElementById("li_" + idx).className = "tab_active";
}




String.Format = function() {
    if (arguments.length == 0)
        return null;
    var str = arguments[0];
    for (var i = 1; i < arguments.length; i++) {
        var re = new RegExp('\\{' + (i - 1) + '\\}', 'gm');
        str = str.replace(re, arguments[i]);
    }
    return str;
}

String.prototype.Trim = function() {
    return this.replace(/^\s+|\s+$/g, "");
}
String.prototype.LTrim = function() {
    return this.replace(/^\s+/, "");
}
String.prototype.RTrim = function() {
    return this.replace(/\s+$/, "");
}

function HtmlEncode(str) {
    var div = document.createElement('div');
    var text = document.createTextNode(str);
    div.appendChild(text);
    return div.innerHTML;
}





function TextBoxFocus(id) {
    try {
        var tbox = document.getElementById(id);
        if (tbox)
            tbox.focus();
    }
    catch (e)
    { }
}




function GetKids(elems, arr) {
    if (elems) {
        for (var i = 0; i < elems.length; i++) {
            if (elems[i].tagName && (elems[i].tagName.toLowerCase() == "input"))
                arr[arr.length] = elems[i];
            GetKids(elems[i].childNodes, arr);
        }
    }
}

function Toggle(elemid) {
    var arr = new Array();
    GetKids(jQuery(elemid).childNodes, arr);

    for (var i = 0; i < arr.length; i++)
        arr[i].checked = !arr[i].checked;
}


function ToggleRadio(elem_id) {
    document.getElementById(elem_id).checked = !document.getElementById(elem_id).checked;
}








// jquery click on enter
function RegisterForSubmitOnEnter(selTextbox, selButton) {
    if (jQuery) {
        jQuery(document).ready(function() {
            if (jQuery(selTextbox).length != 0) {
                jQuery(selTextbox).keypress(function(e) {
                    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
                        if (jQuery(selButton).length != 0)
                            eval(jQuery(selButton).attr("href"));
                        return false;
                    } else {
                        return true;
                    }
                });
            }
        });
    }
}
function RegisterForSubmitOnEnter_Click(selTextbox, selButton) {
    if (jQuery) {
        jQuery(document).ready(function() {
            if (jQuery(selTextbox).length != 0) {
                jQuery(selTextbox).keypress(function(e) {
                    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
                        if (jQuery(selButton).length != 0)
                            jQuery(selButton).click();
                        return false;
                    } else {
                        return true;
                    }
                });
            }
        });
    }
}


/* ------------------ notifikacije --------------------------*/
function AjaxErrorHandler(oXMLHttpRequest, textStatus, errorThrown) {
    MessageBox("Pogreška (AJAX)", "Došlo je do pogreške u radu aplikacije. Molimo Vas da pokušate Vaš upit kasnije. (" + textStatus + ": " + errorThrown + ")");
}
function MessageBox(title, message) {
    var mb = jQuery("#dialog-message");
    title = "Poruka o grešci";
    //title = title ? title : "Poruka (" + new Date().getHours() + ":" + new Date().getMinutes() + ")";
    jQuery("#dialog-message-content", mb).html(message);
    
    mb.dialog({
        modal: true
        , resizable: false
        , draggable: false
        , closeOnEscape: true
        , title: title
        , buttons: {
            Ok: function() { jQuery(this).dialog('close'); }
        }
    });

}
function Notification(title, message) {
    var html = "<dl class='inline-message'><dt>" + title + "</dt><dd>" + message + "</dd></dl>";
    jQuery(document.body).append(html);
    jQuery("dl.inline-message").fadeIn();    
    setTimeout(Notification_fadeout, 4 * 1000);
}
function Notification_fadeout() {
    var box = jQuery("dl.inline-message");
    box.fadeOut("slow");
    jQuery(document.body).remove(box);
}
/* ------------------------------------------------------------------*/